| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Linien zu einer Gruppe zusammenfassen. (969 mal gelesen)
|
Benny4 Mitglied Softwareentwickler
Beiträge: 178 Registriert: 16.02.2006 AutoCAD 2010 ZW-CAD 2012
|
erstellt am: 05. Jun. 2007 10:15 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum, ich zeichne mit VBA ein paar Linien und möchte diese dann in eine Gruppe zusammenfassen. Leider klappt das nicht wirklich... So habe ich es gemacht: Code:
Dim lineGrafik As AcadLine Dim myGroup As AcadGroup Dim myGroupObjects() As AcadEntityFor I = 0 To 5 'Linie zeichnen Set lineGrafik = ThisDrawing.ModelSpace.AddLine(startPointGrafik, endPointGrafik) ReDim Preserve myGroupObjects(0 To UBound(myGroupObjects) + 1) As AcadEntity 'Meinem Array die Linie zuweisen myGroupObjects(UBound(myGroupObjects)) = ThisDrawing.ModelSpace.Item(ThisDrawing.ModelSpace.Count - 1) Next 'Die Gruppe erzeugen Set myGroup = ThisDrawing.Groups.Add("GROUP_TEST_" & ThisDrawing.Groups.Count) 'Der Gruppe meine Objekte dazufügen myGroup.AppendItems myGroupObjects
Als Fehlermeldung krieg ich dann: -2147418113 Die Methode 'AppendItems' für das Objekt 'IAcadGroup' ist fehlgeschlagen. Was mache ich falsch?
------------------ Grüse Benny Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
Beiträge: 1521 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 05. Jun. 2007 20:52 <-- editieren / zitieren --> Unities abgeben: Nur für Benny4
|
Benny4 Mitglied Softwareentwickler
Beiträge: 178 Registriert: 16.02.2006 AutoCAD 2010 ZW-CAD 2012
|
erstellt am: 06. Jun. 2007 10:18 <-- editieren / zitieren --> Unities abgeben:
Hallo, diese Berechne ich anhand verschiedener Parameter. Diese stimmen aber 100%ig, da die Linien in AutoCAD auch korrekt gezeichnet werden. Ich scheitere nur daran, diese Linien dann in eine Gruppe hinzuzufügen. ------------------ Grüse Benny Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
Beiträge: 1521 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 06. Jun. 2007 13:15 <-- editieren / zitieren --> Unities abgeben: Nur für Benny4
Hallo Benny, erstes: Die Zuweisung zum Objectarray muss mit SET erfolgen zweitens: Bei ersten Durchlauf wird dein Feld redimensioniert unter Bezug auf die alte Obergrenze. Die ist bei ersten Mal aber nicht vorhanden. Code: Sub Grouptest() Dim I As Integer Dim StartPointGrafik(0 To 2) As Double Dim EndPointGrafik(0 To 2) As DoubleDim lineGrafik As AcadLine Dim myGroup As AcadGroup Dim myGroupObjects() As AcadEntity ReDim myGroupObjects(0) Dim count As Integer For I = 0 To 5 count = count + 1 StartPointGrafik(0) = I StartPointGrafik(1) = 0 EndPointGrafik(0) = I EndPointGrafik(1) = 10 'Linie zeichnen Set lineGrafik = ThisDrawing.ModelSpace.AddLine(StartPointGrafik, EndPointGrafik) lineGrafik.Update ReDim Preserve myGroupObjects(0 To count - 1) 'Meinem Array die Linie zuweisen Set myGroupObjects(UBound(myGroupObjects)) = lineGrafik Next 'Die Gruppe erzeugen Set myGroup = ThisDrawing.Groups.Add("GROUP_TEST_" & ThisDrawing.Groups.count) 'Der Gruppe meine Objekte dazufügen myGroup.AppendItems myGroupObjects End Sub
Wilfried Stelberg ------------------ Warum lisp'eln wenn's auch anders geht. www.ib-stelberg.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Benny4 Mitglied Softwareentwickler
Beiträge: 178 Registriert: 16.02.2006 AutoCAD 2010 ZW-CAD 2012
|
erstellt am: 06. Jun. 2007 13:27 <-- editieren / zitieren --> Unities abgeben:
Hallo, danke, jetzt funktionierts genau so wie ich es wollte. Habe eigentlich schon versucht, mit SET dem Objectarray die Linie zuzuweisen, und den Array hatte ich auch initialisiert. Egal, so klappt es! Danke ------------------ Grüsse Benny Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |