Autor
|
Thema: Verbindung zweier PINs mit Script löschen! (1394 mal gelesen)
|
Daudi2010 Mitglied
Beiträge: 52 Registriert: 16.05.2014 E3.Series 2014
|
erstellt am: 05. Aug. 2014 14:07 <-- editieren / zitieren --> Unities abgeben:
Hallo ich bin nun da schon eine Weile dran und hab es leider noch nicht geschafft! Wenn ich 2 Blöcke mit Steckern habe und dort dann die PINs verbunden sind wie kann ich die Verbindung via Script löschen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 05. Aug. 2014 17:32 <-- editieren / zitieren --> Unities abgeben: Nur für Daudi2010
|
Daudi2010 Mitglied
Beiträge: 52 Registriert: 16.05.2014 E3.Series 2014
|
erstellt am: 06. Aug. 2014 11:07 <-- editieren / zitieren --> Unities abgeben:
|
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 06. Aug. 2014 11:15 <-- editieren / zitieren --> Unities abgeben: Nur für Daudi2010
Das Netsegment ist meines Erachtens tatsächlich nur die in der Zeichnung gezeichneten einzelnen Verbindungslinien. Die Verbindung ist die Connection, da bin ich mir zumindest sehr sicher, und die Abhängigkeiten müssten an den Pins hängen. Es kann allerdings wirklich sein, dass das Löschen der Verbindungen so gar nicht möglich ist. Ich kann aber auch mal mit schauen, wenn ich bissel Luft habe. Ist für mich auch ein netter Lerneffekt Schließlich mach ichs mit E3 noch nicht so lange BTW: was hast du denn genau vor, vll. führt ja auch eine andere Idee zum Ziel ------------------ MFG Rick Schulz Nettiquette (CAD.de) - Was ist die Systeminfo? - Wie man Fragen richtig stellt. - Unities
[Diese Nachricht wurde von RSchulz am 06. Aug. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Daudi2010 Mitglied
Beiträge: 52 Registriert: 16.05.2014 E3.Series 2014
|
erstellt am: 06. Aug. 2014 16:18 <-- editieren / zitieren --> Unities abgeben:
Ja ich mach es eben auch erst seit kurzem! VBscript/E3.Series/XML Ich habe verschiedene Blöcke die Verbunden sind und muss dann eine xml Datei auslesen und eventuell Verbindungen löschen/setzen je nachem was in der xml datei steht! Falls du das Bild sehen kannst das Gelbe ist der Block und dann gibt es eben 2 Stecker alles miteinander verbunden und nun soll ich zum Beispiel eines der Rechtecke löschen und die Verbindung! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 06. Aug. 2014 16:48 <-- editieren / zitieren --> Unities abgeben: Nur für Daudi2010
|
Daudi2010 Mitglied
Beiträge: 52 Registriert: 16.05.2014 E3.Series 2014
|
erstellt am: 07. Aug. 2014 08:17 <-- editieren / zitieren --> Unities abgeben:
Naja Zuken ist da keine große Hilfe! Ich hatte mal eine kurze Einführung in E3.Series und Script schreiben aber an einem Tag lernt man auch nicht gerade viel! Ich habe es mir nun so gedacht: concnt = blk.GetConnectorIds( conids For c = 1 To concnt con.setid conids( c pincnt = con.GetPinIds( pinids For p = 1 To pincnt pin.SetId pinids( p Next Next Komm da nur noch nicht ganz hin! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
K0NFUZIUS Moderator
Beiträge: 258 Registriert: 06.02.2006
|
erstellt am: 08. Aug. 2014 15:56 <-- editieren / zitieren --> Unities abgeben: Nur für Daudi2010
Hallöle, darf ich anhand Deines tollen Screenshots nochmal nachfragen, welche Verbindungen Du genau löschen möchtest? Die zwischen dem Blockstecker und dem Trennstecker? Oder wird der Trennstecker von Deinem Skript gelöscht? Soll das Löschen der Verbindungslinien ausgehend der verlegten Drähte (zw. Blockstecker und Trennstecker) erfolgen? Soll der Draht auch gelöscht werden? Zitat: Falls du das Bild sehen kannst das Gelbe ist der Block und dann gibt es eben 2 Stecker alles miteinander verbunden und nun soll ich zum Beispiel eines der Rechtecke löschen und die Verbindung!
Welches Rechteck meinst Du? Bitte erkläre nochmal mal auf welcher Grundlage Du was löschen möchtest. Gruß Jörg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Daudi2010 Mitglied
Beiträge: 52 Registriert: 16.05.2014 E3.Series 2014
|
erstellt am: 13. Aug. 2014 12:11 <-- editieren / zitieren --> Unities abgeben:
Hallo, also ich habe nun nochmal ein Bild angehängt! Das was mit rot durchgestrichen ist soll zum Beispiel gelöscht werden. Nun wenn das Bauteil -E26 zuerst gelöscht wird,geht ja die Verbindungslinie zusammen und ich kann dann noch den Pin und die Verbindungslinie löschen! Mein Code funktioniert nun teilweise! Wenn es mir zuerst den Pin löscht habe ich ja keine Verbidnung mehr und kann daher das NetSegment nicht mehr löschen! Gibt es eventuell noch eine andere Möglichkeit das rote alles zu löschen? steckername = "-X3" Pinname = "19"
dev.Search steckername, "=6029_039_412","+0300" pincnt = dev.GetPinIds( pinids) For p = 1 To pincnt 'Suche Pin pin2.SetId pinids( p ) test2 = pin2.getname If test2 = Pinname Then test3 = pin2.GetConnectedPinID pin3.SetId test3 test4 = pin3.GetNetSegmentIds( nsids ) ns.SetId nsids(1) test4 = ns.GetConnectedSymbolIds( symids ) sym.SetID symids(1) sym.delete test4 = pin3.GetNetSegmentIds( nsids ) ns.SetId nsids(1) ns.delete sym.SetID symids(2) sym.delete Exit For End If Next Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Daudi2010 Mitglied
Beiträge: 52 Registriert: 16.05.2014 E3.Series 2014
|
erstellt am: 13. Aug. 2014 12:18 <-- editieren / zitieren --> Unities abgeben:
steckername = "-X3" Pinname = "19" dev.Search steckername, "=6029_039_412","+0300" pincnt = dev.GetPinIds( pinids) For p = 1 To pincnt 'Suche Pin pin2.SetId pinids( p ) test2 = pin2.getname If test2 = Pinname Then test3 = pin2.GetConnectedPinID pin3.SetId test3 test4 = pin3.GetNetSegmentIds( nsids ) ns.SetId nsids(1) test4 = ns.GetConnectedSymbolIds( symids ) Hier bekomme ich ja die Symbole die mit meinem gefundenen NetSegment verbunden sind. Ein Symbol ist das BAuteil -E26 und das andere ist ja der Pin. Ich will zuerste das Bauteil löschen, dann das netsegment und als letztes den Pin. Kann mir jemand sagen wie ich die Identifier/ID abgleichen kann so dass alles in der richtigen Reihenfolge gelöscht wird? Oder kann ich einfach alles aufeinmal löschen? sym.SetID symids(1) sym.delete test4 = pin3.GetNetSegmentIds( nsids ) ns.SetId nsids(1) ns.delete sym.SetID symids(2) sym.delete Exit For End If Next [/B][/QUOTE] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Daudi2010 Mitglied
Beiträge: 52 Registriert: 16.05.2014 E3.Series 2014
|
erstellt am: 14. Aug. 2014 10:32 <-- editieren / zitieren --> Unities abgeben:
So ich habe nun eine Lösung gefunden! Habe nun jedoch ein anderes Problem. Ich würde nun gerne ein Symbol durch ein anderes ersetzen! Mit sym.getschemalocation kann ich ja die Position eines Symbols herausfinden aber wie kann ich nun genau an dieser Stelle ein anderes platzieren? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
K0NFUZIUS Moderator
Beiträge: 258 Registriert: 06.02.2006
|
erstellt am: 14. Aug. 2014 12:37 <-- editieren / zitieren --> Unities abgeben: Nur für Daudi2010
|
Daudi2010 Mitglied
Beiträge: 52 Registriert: 16.05.2014 E3.Series 2014
|
erstellt am: 14. Aug. 2014 13:59 <-- editieren / zitieren --> Unities abgeben:
So ich hab es nun anders gelöst! Und zwar suche ich mir erst das Bauteil/Symbol am anderen Ende der Verbindung speichere die x/y werte, lösche es und platziere dann ein neues Symbol/Bauteil genau an diese x/y Werte! Nun habe ich aber ein Problem wenn es eine Merfachverindung gibt! Auf dem Bild ist bei PIN 9 eine Abzweigung und nun sucht es mir nur bis zu dieser Abzweigung und findet leider das Bauteil/Symbol nicht ! Weiß denn jemand als was der schwarze Verbindungspunkt(da makiert sieht man nur ein gestricheltes Kästchen ) angesehen wird und wie ich über diesen hinaus komme? [Diese Nachricht wurde von Daudi2010 am 14. Aug. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
K0NFUZIUS Moderator
Beiträge: 258 Registriert: 06.02.2006
|
erstellt am: 14. Aug. 2014 14:41 <-- editieren / zitieren --> Unities abgeben: Nur für Daudi2010
Du gehst aufs Netz net.setid( netseg.getid() ) und holst Dir vom Netz alle Netzsegmente nscnt = net.GetNetSegmentIds(nsids) dann über alle Netzsegmente rüber und schauen ob das das gesuchte Symbol ist: For i = 1 to nscnt ns.setid( nsids(i) ) ns.GetConnectedSymbolIds( ...) For .... Next Next
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Daudi2010 Mitglied
Beiträge: 52 Registriert: 16.05.2014 E3.Series 2014
|
erstellt am: 14. Aug. 2014 15:04 <-- editieren / zitieren --> Unities abgeben:
Also im Moment suche ich noch die Segmente die mit dem Pin verbunden sind. pin3.GetNetSegmentIds( nsids ) Daher bekomme ich nur das bis zu dem Knoten! [Diese Nachricht wurde von Daudi2010 am 14. Aug. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Daudi2010 Mitglied
Beiträge: 52 Registriert: 16.05.2014 E3.Series 2014
|
erstellt am: 19. Aug. 2014 11:18 <-- editieren / zitieren --> Unities abgeben:
Hallo Jörg, ich habe ein wenig rumprobiert aber es leider noch nicht geschafft! Im Moment gib es mir immer aus dass es 0 segmente gibt! Vielleicht könntest du mir da nochmal helfen habe ein Bild auf dem man nun mehr sieht angehängt. ich müsste jetzt z.B. bei Pin 9 alles löschen oder teilweise was löschen! Ich komme nur noch nicht zum Symbol und den Segmenten! Danke David Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
K0NFUZIUS Moderator
Beiträge: 258 Registriert: 06.02.2006
|
erstellt am: 19. Aug. 2014 16:19 <-- editieren / zitieren --> Unities abgeben: Nur für Daudi2010
Hallo David, Du hast doch das angeschlossene Netzsegment. Behauptest Du zumind.
Zitat: pin3.GetNetSegmentIds( nsids ) Daher bekomme ich nur das bis zu dem Knoten!
Mit dem Netsegment gehst Du auf das Netz Code: net.setid( netseg.getid() )
und holst Dir vom Netz alle Netzsegmente
Code: nscnt = net.GetNetSegmentIds(allnsids)
Dann müsstest Du 3 Netzsegmente bekommen Dann über alle Netzsegmente drüber und schaust ob das das gesuchte Symbol ist: Code: For i = 1 to nscnt ns.setid( allnsids(i) ) consymCnt = ns.GetConnectedSymbolIds( consymIds ) For j = 1 to consymCnt sym.setid consymIds (j) ' Wenn das das gesuchte Symbol ist dann Netzsegment löschen und aus der For Schleife raus Next Next
Sonst kannst Du mal den Code Fetzen Posten der noch nicht geht .. und wo Du genau 0 zurück bekommst? Gruß Jörg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Daudi2010 Mitglied
Beiträge: 52 Registriert: 16.05.2014 E3.Series 2014
|
erstellt am: 20. Aug. 2014 09:09 <-- editieren / zitieren --> Unities abgeben:
Hallo ja also ich kann ja bei allen anderen mir das Net Segment und Symbol löschen lassen! Hier ist mal mein Code wie es bei den anderen funktioniert bei denen keine Abzweigung ist: SteckernameXml = "-X3" PinnameXML = "14" dev.Search SteckernameXml, "=6029_039_412","+0300" pincnt = dev.GetPinIds( pinids) For p = 1 To pincnt 'Suche Pin pin2.SetId pinids( p ) PinNameStecker = pin2.getname If PinNameStecker = PinnameXML Then PinIdAufgesteckterPin = pin2.GetConnectedPinID pin3.SetId PinIdAufgesteckterPin AnzahlSegmentIds = pin3.GetNetSegmentIds( nsids ) ns.SetId nsids(1) AnzahlSymIds = ns.GetConnectedSymbolIds( symids ) sym.SetID symids(1) SymIdAufgesteckterPin = sym.setid (pin3.getid) MsgBox sym.getname For i = 1 To AnzahlSymIds sym.SetID symids(i) If SymIdAufgesteckterPin = symids(i) Then sym.SetID symids(2) sym.delete AnzahlSegmentIds = pin3.GetNetSegmentIds( nsids ) ns.SetId nsids(1) ns.delete sym.SetID symids(1) sym.delete Exit For Else sym.SetID symids(1) sym.delete AnzahlSegmentIds = pin3.GetNetSegmentIds( nsids ) ns.SetId nsids(1) ns.delete sym.SetID symids(2) sym.delete Exit For End If Next Exit For End If Next Wenn ich nun das so machen, bekomme ich bei MSgBox nscnt eine 0 zurück und ich komme gerade leider nicht auf den Fehler!
If PinNameStecker = PinnameXML Then PinIdAufgesteckterPin = pin2.GetConnectedPinID pin3.SetId PinIdAufgesteckterPin AnzahlSegmentIds = pin3.GetNetSegmentIds( nsids ) net.setid(netseg.getid()) nscnt = net.GetNetSegmentIds(allnsids) MsgBox nscnt ' hier kommt Null ns.SetId nsids(1) AnzahlSymIds = ns.GetConnectedSymbolIds( symids ) sym.SetID symids(1) SymIdAufgesteckterPin = sym.setid (pin3.getid) MsgBox sym.getname [Diese Nachricht wurde von Daudi2010 am 20. Aug. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
K0NFUZIUS Moderator
Beiträge: 258 Registriert: 06.02.2006
|
erstellt am: 20. Aug. 2014 10:30 <-- editieren / zitieren --> Unities abgeben: Nur für Daudi2010
So müsste es gehen Code:
If PinNameStecker = PinnameXML Then PinIdAufgesteckterPin = pin2.GetConnectedPinID pin3.SetId PinIdAufgesteckterPin AnzahlSegmentIds = pin3.GetNetSegmentIds( nsids ) net.setid(nsids(1)) ' <- hier war vermutlich der Fehler nscnt = net.GetNetSegmentIds(allnsids) MsgBox nscnt ' <- sollte lt. Screenshot jetzt 3 liefern For k = 1 to nscnt ns.SetId allnsids(k) AnzahlSymIds = ns.GetConnectedSymbolIds( symids ) sym.SetID symids(1) SymIdAufgesteckterPin = sym.setid (pin3.getid) MsgBox sym.getname Next
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Daudi2010 Mitglied
Beiträge: 52 Registriert: 16.05.2014 E3.Series 2014
|
erstellt am: 20. Aug. 2014 10:46 <-- editieren / zitieren --> Unities abgeben:
|
Daudi2010 Mitglied
Beiträge: 52 Registriert: 16.05.2014 E3.Series 2014
|
erstellt am: 20. Aug. 2014 11:15 <-- editieren / zitieren --> Unities abgeben:
Wie ist es nun möglich auf alle Symbole die dort angeschlossen sind zu kommen? Im Moment zeigt es mir immer nur den Pin an den ich schon habe! Die Boxen am anderen Ende also nach dem Punkt leider noch nicht! Ok habe es rausgefunden!
[Diese Nachricht wurde von Daudi2010 am 20. Aug. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Daudi2010 Mitglied
Beiträge: 52 Registriert: 16.05.2014 E3.Series 2014
|
erstellt am: 21. Aug. 2014 10:22 <-- editieren / zitieren --> Unities abgeben:
Also wenn ich ein Symbol manuell lösche verbinden sich die 2 Verbindungslinien. Wenn ich nun aber das Symbol mit dem Skript lösche ist bei diesem Fall wo das Symbol auf der Verzweigung liegt ein Loch und die Linien verbinden sich nicht! Kann mir jemand sagen woran das liegt? [Diese Nachricht wurde von Daudi2010 am 21. Aug. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |