| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Block erstellen mit VBA (1224 mal gelesen)
|
Ralf Rehm Mitglied Dipl.-Ing. Stahlbau
Beiträge: 57 Registriert: 16.12.2003
|
erstellt am: 16. Dez. 2003 13:59 <-- editieren / zitieren --> Unities abgeben:
|
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 16. Dez. 2003 14:31 <-- editieren / zitieren --> Unities abgeben: Nur für Ralf Rehm
hab mal ein bisschen gesucht, aber hab auch nichts gescheites gefunden. eine (zugegeben unelegante)Möglichkeit wäre thisdrawing.wblock filename, selectionset und dann wieder einfügen aber da muss es doch was gescheiteres geben ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Karsten HST Mitglied Bauingenieur
Beiträge: 54 Registriert: 22.04.2003
|
erstellt am: 16. Dez. 2003 14:57 <-- editieren / zitieren --> Unities abgeben: Nur für Ralf Rehm
Versuchs mal mit der CopyObjects-Anweisung des Dokument-Objectes. Dim nBlock As AcadBlock, InsPoint(2) As Double Dim sSet As AcadSelectionSet, sItem As AcadEntity Dim Objects() As AcadEntity On Error Resume Next Set nBlock = Blocks.Add(InsPoint, "AllEntities") Set sSet = SelectionSets.Add("Entities") If sSet Is Nothing Then Set sSet = SelectionSets("Entities") End If sSet.Clear sSet.SelectOnScreen ReDim Objects(sSet.Count - 1) For i = 0 To sSet.Count - 1 Set Objects(i) = sSet.Item(i) Next CopyObjects Objects, nBlock, IdPairs Dieser Code fügt die gewählten Zeichnungsobjekte in die Blockdefinition AllEntities ein. Anschließend mußt Du nur noch die vorhandenen Elemente löschen, den Block in die Zeichnung einfügen oder was sonst noch so passieren soll.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ralf Rehm Mitglied Dipl.-Ing. Stahlbau
Beiträge: 57 Registriert: 16.12.2003 AutoCAD Architecture 2008 - 2011 AutoCAD 2002 - 2011 Revit 2010
|
erstellt am: 16. Dez. 2003 16:14 <-- editieren / zitieren --> Unities abgeben:
Erst einmal vieln Dank für die prompte Hilfe! Wenn ich den Code so ausführe, existiert allerdings anschließend der Block "AllEntities" nnicht in der Zeichnung. Um ihn aber danach einfügen zu können müsste er ja existieren. Als irgendetwas fehlt mir noch oder habe ich falsch gemacht ... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Karsten HST Mitglied Bauingenieur
Beiträge: 54 Registriert: 22.04.2003
|
erstellt am: 17. Dez. 2003 09:02 <-- editieren / zitieren --> Unities abgeben: Nur für Ralf Rehm
Wenn Du den Code 1:1 übernommen hast, muss dieser im Klassenmodul ThisDrawing eingefügt werden (natürlich in eine Prozedur gehüllt). Wenn Du den Code außerhalb des Klassenmoduls verwendest (Formular oder Modul), musst Du das Dokumentobjekt, auf die sich die Operationen beziehen mit angeben (normalewrweise ThisDrawing). Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |