Linkbox Setlink with data? [SOLVED]
-
On 10/04/2017 at 14:33, xxxxxxxx wrote:
Hi guys,
I am trying to Load the data from the text file, read it and load it in to the link box. but it don't link what I tell it to find in the object manger, which is Cube.1 inside the .txt file. Plz tell what I am doing wrong in my code.This is what inside the .txt file.
Cube.1
The Code:
Load = {"id": 1009, "name": "Open Settings"} SaveSettingsPath_in_field = 1011 UI_TEMP_S1 = 1010 class LinkBoxDialog(gui.GeDialog) : def CreateLayout(self) : self.MenuFlushAll() self.MenuSubBegin("Settings") self.MenuAddString(Load["id"], Load["name"]) self.MenuSubEnd() self.MenuFinished() self.GroupBegin(34, c4d.BFH_MASK, rows=1) self.AddStaticText(203, c4d.BFH_CENTER, 0, 0, "Settings") self.Enable(203, False) self.AddEditText(SaveSettingsPath_in_field, c4d.BFH_MASK, 250, 10) self.GroupEnd() self.GroupBegin(34, c4d.BFH_MASK, rows=1) self.AddStaticText(0, c4d.BFH_CENTER, 0, 0, "TEMP 1.") self.rootLinkBaseContainer = c4d.BaseContainer() self.LinkBox1 = self.AddCustomGui(UI_TEMP_S1, c4d.CUSTOMGUI_LINKBOX, "", c4d.BFH_CENTER, 250, 10, self.rootLinkBaseContainer) self.GroupEnd() return True def LoadSettings(self) : doc = c4d.documents.GetActiveDocument() Load_Path = st.LoadDialog(type=c4d.FILESELECTTYPE_ANYTHING, title="Open Your Settings Folder Directory.", flags=c4d.FILESELECT_DIRECTORY, force_suffix=".txt") self.SetString(SaveSettingsPath_in_field, Load_Path) Get_Path = self.GetString(SaveSettingsPath_in_field) doc = c4d.documents.GetActiveDocument() linkBox = self.FindCustomGui(UI_TEMP_S1, c4d.CUSTOMGUI_LINKBOX) data1 = open(os.path.join(Get_Path, 'Temp_Data_1.txt'), "r") read_txt = data1.readline() get_obj = doc.SearchObject(read_txt) linkBox.SetLink(get_obj) c4d.EventAdd() return True def Command(self, id, msg=None) : if (id == 1009) : self.LoadSettings() return True
plz help or tips would be really helpful to me.
Cheers,
Ashton -
On 11/04/2017 at 09:39, xxxxxxxx wrote:
Hi Ashton,
the problem is, that the result of readline() contains the newline/linebreak at the end. Strip this from the string and your code works. Still I suggest to add error checks, where needed. Also makes debugging easier.
-
On 11/04/2017 at 16:50, xxxxxxxx wrote:
Thanks Andreas
lol i had a next line which is line 2 lol
##################################### # Save UI Settings to File ##################################### def Save_UI_Settings(self) : doc = c4d.documents.GetActiveDocument() newpath = st.LoadDialog(type=c4d.FILESELECTTYPE_ANYTHING, title="Save Settings in a Directory.", flags=c4d.FILESELECT_DIRECTORY, force_suffix="") self.SetString(SaveSettingsPath_in_field, newpath) linkBox = self.FindCustomGui(1010, c4d.CUSTOMGUI_LINKBOX) ##################################### # Save Temp ##################################### with open(p.join(os.path.join(newpath, 'Temp_Data_1.txt')), 'w') as type_file: LinkData = linkBox.GetLink().GetName() type_file.write(LinkData+"\n") # <----------- I needed to Remove +"\n" it was making line 2 in the .txt
So in my Load Settings, I now have it like this now.
doc = c4d.documents.GetActiveDocument() linkBox = self.FindCustomGui(1010, c4d.CUSTOMGUI_LINKBOX) data1 = open(os.path.join(Get_Path, 'Temp_Data_1.txt'), "r") linkBox.SetLink(doc.SearchObject(data1.readline())) c4d.EventAdd()
So I Works Great on Loading!
Thanks and Cheers,
Ashton