| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Skizzenblock einfügen (2436 mal gelesen)
|
Frank_Schalla Ehrenmitglied CAD_SYSTEMBETREUER
Beiträge: 1731 Registriert: 06.04.2002 DELL M6800 Cad Admin Methodikentwickler 3D
|
erstellt am: 30. Jul. 2015 12:40 <-- editieren / zitieren --> Unities abgeben:
Ich habe schon gesucht und nichts gefunden Frage : In einem Bauteil gibt es in der aktiven Skizze einen Skizzenblock. Nun gibt es per rechte Maustaste bei Anwahl die Funktion Block einfügen. Dort hängt der Block dann am Cursor und kann plaziert werden. Gibt es diese Möglichkeit auch über die API ?? Ich habe einfach keine Objekteigenschaft wie Block.Insert gefunden. Bin für jede Hilfe dankbar
------------------ ************************************ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KatzenHund Mitglied CAx Administrator
Beiträge: 83 Registriert: 24.04.2012 Win 10 64Bit Product Design & Manufacturing Collection Vault Professional DELL Precision T5810
|
erstellt am: 30. Jul. 2015 14:02 <-- editieren / zitieren --> Unities abgeben: Nur für Frank_Schalla
Hallo Frank, ich gehe davon aus, dass du einen AutoCAD Block meinst, welcher platziert werden soll. Hier ein VBA Snippet: Code: Dim obj_SketchBlockDef As Inventor.SketchBlockDefinition Set obj_SketchBlockDef = ThisApplication.ActiveDocument.ComponentDefinition.SketchBlockDefinitions.Item(2) Dim obj_CompDef As Inventor.ComponentDefinition Set obj_CompDef = ThisApplication.ActiveDocument.ComponentDefinition Dim obj_Sketch As Inventor.Sketch Set obj_Sketch = obj_CompDef.Sketches.Item(1) Call obj_SketchBlockDef.CopyContentsTo(obj_Sketch)
Das Beispiel geht davon aus, dass der gewünschte Block als zweites Item in der Blockliste ist und in die erste Skizze eingefügt werden soll. Gruß Stefan
------------------ Wer nicht mitmacht, kann auch nichts verändern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Frank_Schalla Ehrenmitglied CAD_SYSTEMBETREUER
Beiträge: 1731 Registriert: 06.04.2002 DELL M6800 Cad Admin Methodikentwickler 3D
|
erstellt am: 31. Jul. 2015 09:08 <-- editieren / zitieren --> Unities abgeben:
erst mal danke das einfügen habe ich ja schon alles was mir fehlt ist das dynamische plazieren oder wenigsten einfügen bei 0.0 Siehe Video im Anhang ------------------ ************************************ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KatzenHund Mitglied CAx Administrator
Beiträge: 83 Registriert: 24.04.2012 Win 10 64Bit Product Design & Manufacturing Collection Vault Professional DELL Precision T5810
|
erstellt am: 31. Jul. 2015 10:29 <-- editieren / zitieren --> Unities abgeben: Nur für Frank_Schalla
Hallo Frank, etwas falsch verstanden... Code: Dim obj_SketchBlockDef As Inventor.SketchBlockDefinition Set obj_SketchBlockDef = ThisApplication.ActiveDocument.ComponentDefinition.SketchBlockDefinitions.Item(1) Dim obj_CompDef As Inventor.ComponentDefinition Set obj_CompDef = ThisApplication.ActiveDocument.ComponentDefinition Dim obj_Sketch As Inventor.Sketch Set obj_Sketch = obj_CompDef.Sketches.Item(1) Dim obj_Point2d As Inventor.Point2d Set obj_Point2d = ThisApplication.TransientGeometry.CreatePoint2d(10, 10) Dim obj_SketchBlocks As Inventor.SketchBlocks Set obj_SketchBlocks = obj_Sketch.SketchBlocks Call obj_SketchBlocks.AddByDefinition(obj_SketchBlockDef, obj_Point2d)
So sollte es gehen. Gruß Stefan
------------------ Wer nicht mitmacht, kann auch nichts verändern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Frank_Schalla Ehrenmitglied CAD_SYSTEMBETREUER
Beiträge: 1731 Registriert: 06.04.2002 DELL M6800 Cad Admin Methodikentwickler 3D
|
erstellt am: 31. Jul. 2015 18:40 <-- editieren / zitieren --> Unities abgeben:
Hi Stefan nochmals danke aber die Lösung mit dem 2dpoint war auch mein zweiter Gedanke. Schau mal in dem Video hast du auch eine Idee wie dies interaktiv geht ? Eigentlich würde ein Selectset auf den Block und dann ein Aufruf des CommandManagers mit Block einfügen reichen. Aber ich finde in der CommandList diese Kontextkommando nicht und habe wieder mal so eine böse Ahnung das es dies nicht gibt
------------------ ************************************ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 31. Jul. 2015 23:20 <-- editieren / zitieren --> Unities abgeben: Nur für Frank_Schalla
Hallo Ich hab das mal mit skizzierten Symbolen in der IDW gemacht. Für Skizzenblöcke müßte das vergleichbar gehen.
Code: Dim oSelectSet As SelectSet oSelectSet = myDrawDoc.SelectSet oSelectSet.Clear() oSelectSet.Select(myDrawDoc.SketchedSymbolDefinitions.Item(mySketchedSymbolName)) Dim oControlDef As ControlDefinition oControlDef = myInventor.CommandManager.ControlDefinitions.Item("DrawingUserDefinedSymbolsQuickCtxCmd") oControlDef.Execute()
Probier's mal mit "SketchRigidSetPlaceInstanceCmd" als ControlDefinition.
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Frank_Schalla Ehrenmitglied CAD_SYSTEMBETREUER
Beiträge: 1731 Registriert: 06.04.2002 DELL M6800 Cad Admin Methodikentwickler 3D
|
erstellt am: 01. Aug. 2015 10:17 <-- editieren / zitieren --> Unities abgeben:
Hallo an alle und ralf Ich habe mir ewig die CommandList von Inventor angeschaut und immer wieder den richtigen eintrag nicht gefunden "SketchRigidSetPlaceInstanceCmd" Danke nun klappts. Falls es einer brauchen kann hier mal die Sub zum einfügen die Variablen müsst ihr natürlich anpassen Im Video wie es nun für den Endanwender aussieht ********Sub insert_block(name As String) Dim oCtrlDef As ControlDefinition Dim oSelectSet As Inventor.SelectSet Set oSelectSet = ThisApplication.ActiveDocument.SelectSet Call oSelectSet.Clear Dim blocknum As Integer blocknum = targetdocoCompDef.SketchBlockDefinitions.Count ' MsgBox blocknum Dim num As Integer num = 1 For Each targetdocoSketchBlockDef In targetdocoCompDef.SketchBlockDefinitions If targetdocoSketchBlockDef.name = name Then Call oSelectSet.Select(targetdocoCompDef.SketchBlockDefinitions.Item(num)) End If num = num + 1 Next Set oCtrlDef = ThisApplication.CommandManager.ControlDefinitions.Item("SketchRigidSetPlaceInstanceCmd") oCtrlDef.Execute num = 0 End Sub
------------------ ************************************ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |