Autor
|
Thema: VBS-Methode Blocknameänderung (1035 mal gelesen)
|
JochenR Mitglied
Beiträge: 26 Registriert: 08.09.2015
|
erstellt am: 11. Aug. 2017 06:57 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich stehe vor dem Problem, dass ich bei einem Block, den ich zuvor mit loadandPlaceComponent gesetzt habe, nicht per Methode umbenennen kann. Also ich würde gerne Art/Zählnummer per Skript abändern. Ich dachte erst ich kann das der Methode loadandPlaceComponent direkt mitgeben:
LoadAndPlaceComponent ( name, assignment, location, comp, vers, wirename, after, options ) name: Device designation of the device. When entering an empty string, the device is automatically assigned. This also applies, if the device is already available. Das funktioniert aber leider nicht. Mit welcher Methode kann ich das machen? Ich hoffe ihr könnt mir weiterhelfen. Viele Grüße Jochen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
K0NFUZIUS Moderator
Beiträge: 258 Registriert: 06.02.2006
|
erstellt am: 11. Aug. 2017 13:07 <-- editieren / zitieren --> Unities abgeben: Nur für JochenR
|
JochenR Mitglied
Beiträge: 26 Registriert: 08.09.2015
|
erstellt am: 11. Aug. 2017 13:18 <-- editieren / zitieren --> Unities abgeben:
Hallo Jörg, danke für deine Antwort. Also ich habe soeben dein Beispiel übernommen. Leider ändert sich der Name nicht auf das was im ersten Übergabeparamter steht. Also in meinem Beispiel habe ich: ret = dev.LoadAndPlaceComponent( "B2","ABC","DEF", "A001", "CCCC", "", 0, 0 ) In der Datenbank heißt der Block "A001" und hat eben auch das als Art/Zählnummer. Beim setzen möchte ich das "A001" automatisch in "B2" geändert wird. Anlagenkennzeichen und Ortkennzeichen sind unwichtig. Ein wundert mich, dass unter Symboleigenschaften Art/Zählnummer gesperrt ist, ich haber unter Betriebsmitteleigenschaften die ändern kann. Also eigentlich sind es Teilschaltungen. Wenn ich mit dem Curser über die Teilschaltung gehe, erscheint aber "Block: A001". Hat das damit zu tun? Gruß Jochen [Diese Nachricht wurde von JochenR am 11. Aug. 2017 editiert.] [Diese Nachricht wurde von JochenR am 11. Aug. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
K0NFUZIUS Moderator
Beiträge: 258 Registriert: 06.02.2006
|
erstellt am: 11. Aug. 2017 14:42 <-- editieren / zitieren --> Unities abgeben: Nur für JochenR
Hi Jochen, Die Symboleigenschaften sind bei mir auch ausgegraut.. schau mal in den Betriebsmitteleigenschaften nach. Kann es sein, dass Du schon einen Block mit dem selben Betriebsmittelkennzeichen im Projekt hast. Du machst ja vorher hoffentlich kein Dev.Create ;-) Welche E³. Version hast den den genau? Welches Betriebsmittelkennzeichen wird den vergeben in deinem Fall? Vielleicht "-A1" ? Gruß Jörg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JochenR Mitglied
Beiträge: 26 Registriert: 08.09.2015
|
erstellt am: 11. Aug. 2017 14:49 <-- editieren / zitieren --> Unities abgeben:
Ach, die Gegenprobe hat es bestätigt. Mit Teilschaltungen geht es nicht, irgendwie auch logisch...Gibt es eine Methode, mit der ich das BMK nachträglich ändern kann?
[Diese Nachricht wurde von JochenR am 11. Aug. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
K0NFUZIUS Moderator
Beiträge: 258 Registriert: 06.02.2006
|
erstellt am: 11. Aug. 2017 15:13 <-- editieren / zitieren --> Unities abgeben: Nur für JochenR
|
JochenR Mitglied
Beiträge: 26 Registriert: 08.09.2015
|
erstellt am: 11. Aug. 2017 15:39 <-- editieren / zitieren --> Unities abgeben:
Hi Jörg, ich habe folgendes probiert: Set e3 = CreateObject("CT.Application") Set prj = e3.CreateJobObject Set dev = prj.CreateDeviceObject ret = dev.LoadAndPlaceComponent( "B2","ABC","DEF", "A001", "CCCC", "", 0, 0 ) dev.setName("B2")
Set prj = Nothing Set e3 = Nothing Set dev = Nothing Das führt aber leider nicht zum Erfolg. Weißt du woran es liegt? Danke für deine Hilfe. Gruß Jochen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JochenR Mitglied
Beiträge: 26 Registriert: 08.09.2015
|
erstellt am: 11. Aug. 2017 18:24 <-- editieren / zitieren --> Unities abgeben:
Ich habe eine akzeptable Lösung gefunden und zwar wähle ich im ersten Schritt mit loadandplacecomponent die Teilschaltung mit folgendem Skript: Code: Set e3 = CreateObject("CT.Application") Dim prj Set prj = e3.CreateJobObject Set dev = prj.CreateDeviceObjectret = dev.LoadAndPlaceComponent( "0","ABC","DEF", "A001", "CCCC", "", 0, 0 ) Set e3 = Nothing Set dev = Nothing
Dann muss man das Bauteil platzieren. Anschließend starte ich folgendes Skript um den Namen anzupassen: Code: Set e3 = CreateObject("CT.Application") Dim prj, items Set prj = e3.CreateJobObjectcnt = prj.GetLastAddedItems(items,30): DoChanges items,cnt sub DoChanges(items,cnt) dim sym, sht, dev, i, x, y, grid, shtnam Set sym = prj.CreateSymbolObject Set sht = prj.CreateSheetObject Set dev = prj.CreateDeviceObject if (cnt>0)then 'For i = 1 To ubound(items) sym.SetId items(1) dev.SetId sym.GetId dev.setName("B6") 'Next end if End sub Set e3 = Nothing Set prj = Nothing
Leider geht das nicht in einem Rutsch, weil er bei Laden des Komponente parallel den Code weiter ausführt und ich quasi noch gar nichts gesetzt habe, bevor ich die GetLastAddedItems ausführe. Oder gibt es eine Möglichkeit das in einem "Rutsch" zu machen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
K0NFUZIUS Moderator
Beiträge: 258 Registriert: 06.02.2006
|
erstellt am: 16. Aug. 2017 12:57 <-- editieren / zitieren --> Unities abgeben: Nur für JochenR
Hallo Jochen, entschuldige die späte Antwort... Ok jetzt checke ich, dass Du darüber eine Teilschaltung einliest. Ich dachte immer es handelt sich nur um einen Block. Puhhh gute Frage wie Du das in einem Skript handelst. Ich würde sagen das ist technisch nicht möglich. Ich würde aber dazu tendieren JobInterface::PlacePartInteractivelyEx() zu benutzen. Hier hast Du allerdings das gleiche Problem mit dem nachträglichen umbenennen. ich überlege noch ein bisschen vielleicht komme ich noch auf eine Lösung :-) Gruß Jörg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|