| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| ZW3D 2023: Startrampe für neue Möglichkeiten |
Autor
|
Thema: iLogic Fragen (2516 mal gelesen)
|
kiri2 Mitglied Tech.Produktdesigner
Beiträge: 34 Registriert: 13.03.2014
|
erstellt am: 01. Jun. 2015 21:38 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich finde zwei Befehle für iLogic einfach nicht, weder im Internet noch in der Hilfe. 1. Ich versuche diese Zeilen:
Code: Dim oPartDoc As PartDocument oPartDoc = ThisApplication.Documents.ItemByName(ThisDoc.WorkspacePath()+"\Test.ipt")
So zu schreiben, das ich den Namen des Bauteils im Modellbaum benutzen kann. Also oPartDoc deklarieren kann ohne einen Pfad benutzen zu müssen. Geht das? 2. Versuche ich per iLogic ein Bauteil in einer Baugruppe per Arbeitspunkte festzusetzen. Das heißt auch hier muss ich meine beiden Arbeitspunkte per Namen deklarieren und dann zueinander abhängig setzen. Ich finde leider immer nur etwas zu Ebene oder halt so das es über die Item Nummer deklariert wird (diese ist bei mir jedoch unterschiedlich in den Bauteilen, deshalb per Name)
Jeder Tipp oder Link zu irgendetwas ähnlichem würde mir schon helfen! Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2013 Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 02. Jun. 2015 07:52 <-- editieren / zitieren --> Unities abgeben: Nur für kiri2
Hallo, Bauteile/Baugruppen in der Hauptbaugruppe kannst du direkt über den Browsernamen ansprechen: Code: oPartDoc="Bauteilname:1"
Und dann einfach normal nutzen, z.B. so: Code: Component.isActive(oPartDoc)=True
------------------ MFG Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
kiri2 Mitglied Tech.Produktdesigner
Beiträge: 34 Registriert: 13.03.2014
|
erstellt am: 02. Jun. 2015 12:23 <-- editieren / zitieren --> Unities abgeben:
|
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2013 Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 02. Jun. 2015 12:25 <-- editieren / zitieren --> Unities abgeben: Nur für kiri2
|
kiri2 Mitglied Tech.Produktdesigner
Beiträge: 34 Registriert: 13.03.2014
|
erstellt am: 02. Jun. 2015 13:10 <-- editieren / zitieren --> Unities abgeben:
Aktuell so: Code:
Dim oPartDoc As PartDocument oPartDoc = "Test:1"Dim oCompDef As PartComponentDefinition oComDef = oPartDoc.ComponentDefinition Dim oSketch As PlanarSketch oSketch = oCompDef.Sketches.Item("Skizze 1")
Aber auch wenn ich es ohne Dim oPartDoc As PartDocument schreibe geht es nicht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
W. Holzwarth Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau
Beiträge: 9326 Registriert: 13.10.2000 Inventor bis 2024, Rhino 7, Mainboard ASUS ROG STRIX X570F-Gaming, CPU Ryzen 9 5900X, 64 GB RAM, 4 TB SSD, Radeon RX 6900 XT, Dual Monitor 24", Spacemouse Enterprise, Win 10 22H2
|
erstellt am: 02. Jun. 2015 13:36 <-- editieren / zitieren --> Unities abgeben: Nur für kiri2
|
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2013 Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 02. Jun. 2015 13:41 <-- editieren / zitieren --> Unities abgeben: Nur für kiri2
|
kiri2 Mitglied Tech.Produktdesigner
Beiträge: 34 Registriert: 13.03.2014
|
erstellt am: 02. Jun. 2015 13:46 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von W. Holzwarth: Hmm. Ich lese da mal oComDef statt oCompDef.
Ist gerade nochmal abgetippt. Schreibfehler sind keine drin =) Ich schreibe iLogic Code. Also auch rein in den Regeln nicht im VBA-Editor! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2013 Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 02. Jun. 2015 13:49 <-- editieren / zitieren --> Unities abgeben: Nur für kiri2
|
kiri2 Mitglied Tech.Produktdesigner
Beiträge: 34 Registriert: 13.03.2014
|
erstellt am: 02. Jun. 2015 13:51 <-- editieren / zitieren --> Unities abgeben:
|
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2013 Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 02. Jun. 2015 13:57 <-- editieren / zitieren --> Unities abgeben: Nur für kiri2
Wenn ich deinen Code einfach einfüge und den Rechtschreibfehler mal beseitige, dann meckert er bei mir gleich rum: Fehler in Zeile 2 : Der Typ "PartDocument" ist nicht definiert. Fehler in Zeile 4 : Der Typ "PartComponentDefinition" ist nicht definiert. Fehler in Zeile 7 : Der Typ "PlanarSketch" ist nicht definiert. Es sei denn ich habe unter Optionen den Haken bei reiner VB-Code gesetzt.
------------------ MFG Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
kiri2 Mitglied Tech.Produktdesigner
Beiträge: 34 Registriert: 13.03.2014
|
erstellt am: 02. Jun. 2015 14:19 <-- editieren / zitieren --> Unities abgeben:
Den haken kann ich ja eh nicht setzen da ich iLogic Code verwende Ich benötige ja lediglich den Befehl wie ich dies:
Code: oPartDoc = ThisApplication.Documents.ItemByName(ThisDoc.WorkspacePath()+"\Test.ipt")
im Stil von diesem hier: Code: oSketch = oCompDef.Sketches.Item("Skizze 1")
schreiben kann. Da ich den Pfad des Workspaces in meiner Regel nicht benutzen kann. Deswegen würde ich gerne auf den Browsernamen ausweisen wenn das möglich ist! Selbiges habe ich als Problem bei den Arbeitspunkten welche ich zum abhängig machen benutzen möchte. Ich kann dort nicht auf die, ich nenne es mal ganz einfach Nummer zugreifen. Deswegen muss ich auch hier auf den Browsernamen zugreifen. Ich kann also (als Beispiel) nicht schreiben oWorkpointPart1 = oOcc.Definition.WorkPoints.(2) Sondern bräuchte auch hier etwas wie ....item("ArbeitspunktTest) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2013 Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 02. Jun. 2015 15:39 <-- editieren / zitieren --> Unities abgeben: Nur für kiri2
Du befindest dich in dem Bauteil "Test.ipt"? Dann brauchst du das eigentlich nicht deklarieren. Nur wenn du es öffnen möchtest. Dann brauchst du natürlich den Pfad. Wenn du in einer übergeordneten Baugruppe bist und das Bauteil XY ansprechen willst, dann mach es dir doch einfach: Du hast doch im iLogic-Regeleditor oben den Browserbaum. Dort kannst du auf das jeweilige Teil, das du haben möchtest einen Rechtsklick machen und den aktuellen Status abrufen. Der Vorteil ist, dass du damit den richtigen Namen direkt mit abrufst (z.B.: Component.IsActive("XY:1")=True ) ------------------ MFG Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
kiri2 Mitglied Tech.Produktdesigner
Beiträge: 34 Registriert: 13.03.2014
|
erstellt am: 02. Jun. 2015 16:04 <-- editieren / zitieren --> Unities abgeben:
Ich befinde mich in der übergeordneten Baugruppe. Zitat: Du hast doch im iLogic-Regeleditor oben den Browserbaum. Dort kannst du auf das jeweilige Teil, das du haben möchtest einen Rechtsklick machen und den aktuellen Status abrufen. Der Vorteil ist, dass du damit den richtigen Namen direkt mit abrufst (z.B.: Component.IsActive("XY:1")=True )
Das geht, ja, ist aber nicht das was ich brauche Ich muss das Bauteil definieren damit ich mit der Skizze aus dem Bauteil weiterarbeiten kann ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2013 Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 02. Jun. 2015 16:24 <-- editieren / zitieren --> Unities abgeben: Nur für kiri2
Ich konnte über iLogic noch nie mit Skizzen arbeiten. Das einzige, was geht ist die Skizze neu definieren. Code: Sketch.Redefine("Sketch2", planeName, originName, axisName, AxisIsX := True, NaturalAxisDirection := True)
------------------ MFG Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dg2405 Mitglied Ingenieur MB
Beiträge: 30 Registriert: 16.06.2011 I7-4960X@4.7Ghz Radeon R9-295X2 Samsung 840EVO Win7-64bit SP1 IV2014 SP1
|
erstellt am: 09. Jun. 2015 22:08 <-- editieren / zitieren --> Unities abgeben: Nur für kiri2
Wenn du ItemByName verwenden willst dann so: Code: Dim oAsmCompDef As AssemblyComponentDefinition = ThisApplication.ActiveDocument.ComponentDefinition Dim oOcc1 As ComponentOccurrence = oAsmCompDef.Occurrences.ItemByName("Kettenglied:2")
Eine Achse aus einer ipt kannst du dann so in deiner Bg ansprechen:
Code: Dim oAxis1 As Workaxis Dim oWorkAxisProxy1 As WorkAxisProxy oAxis = oOcc1.Definition.Workaxes.Item(2) oOcc1.CreateGeometryProxy(oAxis1, oWorkAxisProxy)
Und so kannst du dann deine oOccs zueinander abhängig machen:
Code: mateconst = oAsmCompDef.Constraints.AddMateConstraint(oWorkAxisProxy1, oWorkAxisProxy2,0)
Falls ich dich nicht richtig verstanden hab, dann erkläre bitte genauer was du machen willst. Gruß Daniel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
kiri2 Mitglied Tech.Produktdesigner
Beiträge: 34 Registriert: 13.03.2014
|
erstellt am: 12. Jun. 2015 11:07 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von dg2405: Wenn du ItemByName verwenden willst dann so:
Code: Dim oAsmCompDef As AssemblyComponentDefinition = ThisApplication.ActiveDocument.ComponentDefinition Dim oOcc1 As ComponentOccurrence = oAsmCompDef.Occurrences.ItemByName("Kettenglied:2")
Eine Achse aus einer ipt kannst du dann so in deiner Bg ansprechen:
Code: Dim oAxis1 As Workaxis Dim oWorkAxisProxy1 As WorkAxisProxy oAxis = oOcc1.Definition.Workaxes.Item(2) oOcc1.CreateGeometryProxy(oAxis1, oWorkAxisProxy)
Und so kannst du dann deine oOccs zueinander abhängig machen:
Code: mateconst = oAsmCompDef.Constraints.AddMateConstraint(oWorkAxisProxy1, oWorkAxisProxy2,0)
Falls ich dich nicht richtig verstanden hab, dann erkläre bitte genauer was du machen willst. Gruß Daniel
Danke! Passt! Wenn ich schonmal am Fragen stellen bin: Code: X3D = Round(oSketchLines.StartSketchPoint.Geometry.X,2) Y3D = Round(oSketchLines.StartSketchPoint.Geometry.Y,2)
Auf einer 2D Skizze funktioniert das so. Ich finde jedoch in der Hilfe nicht wie der Befehl ".StartSketchPoint" für eine 3D Skizze lauten muss. Weiß das jemand? Oder weiß jemand wo ich es finden kann? Und ich versuche gerade die Farbe eines Features eines Teil von einer Baugruppe aus zu ändern. Jemand eine Idee wie ich das hinbekomme? Meine Versuche sind bis jetzt leider gescheitert Grüße [Diese Nachricht wurde von kiri2 am 12. Jun. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |