Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  E3.series
  in/valid connection

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  in/valid connection (416 mal gelesen)
philipp.huebner
Mitglied



Sehen Sie sich das Profil von philipp.huebner an!   Senden Sie eine Private Message an philipp.huebner  Schreiben Sie einen Gästebucheintrag für philipp.huebner

Beiträge: 34
Registriert: 22.09.2005

erstellt am: 17. Nov. 2005 16:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

wie kann ich eeine "valid"-connection zwischen zwei pins per skript platzieren....meine mit connection.create erstellten sind immer invalid und spucken dann mit getpinids 0 aus....
so kann ich die adern nur mit den beiden anschlußpins platzieren....
signalnamen kann ich den leitungen nur zuordnen,wenn sie "valid "sind ,oder?
dakeschön

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Eldorado
Mitglied



Sehen Sie sich das Profil von Eldorado an!   Senden Sie eine Private Message an Eldorado  Schreiben Sie einen Gästebucheintrag für Eldorado

Beiträge: 73
Registriert: 12.06.2004

erstellt am: 17. Nov. 2005 19:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für philipp.huebner 10 Unities + Antwort hilfreich

Das ConnectionObject ist mit Vorsicht zu genießen. U.a. weil Connection.Create() selbst zwar (mindestens) eine erzeugt, als Returnwert aber immer die ID eines NetSegments liefert ;-) Wenn du also unmittelbar nach dem Create() mit IsValid() abfragst, ob eine Valid oder eine Invalid-Connection entstanden ist, dann wird immer "Invalid" geliefert weil das Objekt selbst gar nicht initialisiert wurde.

Hintergrund dieser etwas verwirrenden Technik ist wohl das Wesen der Connections in E³: Es handelt sich hier nicht nur um gezeichnete Verbindungen sondern ganz allgemein um Verbindungen, die z.B. auch durch Drähte (egal ob sie schon im Plan verlegt sind oder noch nicht) realisiert sind. Die Unterscheidung zwischen "Valid" und "Invalid" bezieht sich lediglich auf die Eindeutigkeit einer Zweipunkt-Verbindung.

Beispiel: Angenommen, du hast von 4 Pins schon jeweils zwei durch eine normale Verbindungslinie verbunden. prj.GetConnectionIds() wird dann zwei Valid-Connections liefern (weil beide eindeutig sind). Verbindest du dann die beiden Verbindungslinien jeweils von Mitte zu Mitte (keine Wurzel-Verdrahtungen), das wird prj.GetConnectionIds() nur noch eine Invalid-Verbindung liefern weil innerhalb des einen Netzes keine eindeutigen Ziele mehr erkennbar sind.
Wenn du deine Verbindungslinien immer sauber mit Wurzeln zeichnest, dann werden auch in einem Netz, an dem mehrere Pins angeschlossen sind (Ketten- oder Ring-Verdrahtungen) eindeutige Zweipunkt-Verbindungen erkannt und entsprechend viele Valid-Connections geliefert.

Zurück zu deinem Problem: Du kannst jederzeit mit Connection.Create() neue Verbindungslinien erzeugen. Dabei entstehen aber möglicherweise mehrere richtige Connections oder es verschwinden sogar welche wie eben beschrieben weshalb diese Funktion selbst keine eindeutige Connection-ID liefert.

Connection.Create() erzeugt aber immer ein NetSegment, auf das du wie folgt zugreifen kannst:

Code:
nsid = Connection.Create(...)
ns.SetId nsid
Diese Netzsegmenten kann man dann auch mit ns.SetSignalName() ein Signal zuordnen. Das hat nichts mit der Eigenschaft "Valid" oder "Invalid" einer Connection zu tun. "Invalid" Connections können Signale tragen und "Valid" Connections können auch ohne Signal existieren.

In diesem Zusammenhang aber noch ein Tipp: Es ist oft besser, den zu verbindenden Pins zuerst Signale zu verpassen weil dann bei der Erzeugung der Verbindungslinien automatisch schon die interne Kurzschluss-Prüfung aktiv ist. Pins mit verschiedenen (anwenderdefinierten) Signalen dürfen weder interaktiv noch per Script miteinander verbunden werden. Wenn deine Verbindungsliste, die du anhand deines Scripts wohl einliest also Fehler enthalten sollte (warum auch immer), so wird das automatisch erkannt und bei Connection.Create() abgelehnt (und liefert dann eine 0). Das Signal der Pins "fließt" bei erfolgreichem Connection.Create() natürlich in die Verbindung ein so dass ein ns.SetSignalName() nicht mehr notwendig ist.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

philipp.huebner
Mitglied



Sehen Sie sich das Profil von philipp.huebner an!   Senden Sie eine Private Message an philipp.huebner  Schreiben Sie einen Gästebucheintrag für philipp.huebner

Beiträge: 34
Registriert: 22.09.2005

erstellt am: 18. Nov. 2005 13:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Dankeschön....den Pins hab ich die Signale dann zugeordnet;und jetzt klappt das auch über die Leitungen.....
nur wie komme ich über das (invalid)connection object an die pins ran...
so erzeuge ich die Verbindung:

x(1) = 57 'Array belegen
y(1) = 82
x(2) = 57
y(2) = 255
connret=sgconn1.create (sheet.GetId, 2, x, y )

die ist invalid und gibt mit getpinids 0 zurück.....die pins brauche ich um adern an verbindungen mit setendpin zu fügen....also wie hänge ich adern an mit connection.create gezeichnete verbindungen,ohne die pins zu kennen.
dankeschön

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Eldorado
Mitglied



Sehen Sie sich das Profil von Eldorado an!   Senden Sie eine Private Message an Eldorado  Schreiben Sie einen Gästebucheintrag für Eldorado

Beiträge: 73
Registriert: 12.06.2004

erstellt am: 21. Nov. 2005 10:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für philipp.huebner 10 Unities + Antwort hilfreich

Das hast du eine Lücke aufgetan. Wie weiter oben schon beschrieben, initialisiert Connection.Create() kein Connection-Objekt sondern liefert als Returnwert lediglich eine NetSegment-ID. Es gibt aber leider kein ns.GetEndPinIds(), das deine Frage direkt beantworten würde...

Ich weiß nicht so recht, was dein Script alles bewirken soll. Wenn du damit aber z.B. gewährleisten möchtest, dass alle gezeichneten Verbindungen im Projekt auch einen physikalischen Draht zugeordnet bekommen, dann könnte folgendes eine Lösung sein: Verlege in einem ersten Durchlauf erst alle Verbindungen und erfrage dann in einem zweiten Schritt mit prj.GetConnectionIds() alle Verbindungen im Projekt. Suche in diesen Verbindungen nach "valid"-Connections, die noch keinen Draht besitzen. Für diese Connections kannst du mit Connection.GetPinIds() die (zwei) Endpins ermitteln, die du dann mti cor.SetEndPinId() einem (bisher noch freien) Draht mit beigibst.

Wenn du aber nur die Verbindungen behandeln willst, die du selbst mit dem Script einfügst (und schon bestehende unverändert verbleiben sollen), dann wird diese Workaround sicher etwas aufwendig: Du könnetst dir alle selbst erstellen NetSegment-ID merken und beim abschließenden Suchen nach valid-Connections nur die weiter verarbeiten, die noch keinen Draht besitzen und in der NetSegment-Liste eines deiner neuen NetSegmente enthalten.

Hast du schon mal beim Support nachgehakt, ob das Problem dort vielleicht schon bekannt und eine Erweiterung geplan ist?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz