| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Neuen Layer erstellen (5511 mal gelesen)
|
marcosevim Mitglied Technischer Konstrukteur
Beiträge: 163 Registriert: 01.08.2007
|
erstellt am: 23. Feb. 2011 09:25 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich möche einfach nur einen neuen Layer im ACAD erstellen. Er schreibt aber "Objekt erforderlich" Wieso? Code:
Sub Neuer_Layer() Set newlayer = acad.ActiveDocument.Layers.Add("TESTTESTTEST") newlayer.Color = 140 End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 ACAD 2008 Mechanical
|
erstellt am: 23. Feb. 2011 09:46 <-- editieren / zitieren --> Unities abgeben: Nur für marcosevim
|
marcosevim Mitglied Technischer Konstrukteur
Beiträge: 163 Registriert: 01.08.2007
|
erstellt am: 23. Feb. 2011 09:57 <-- editieren / zitieren --> Unities abgeben:
|
Ex-Mitglied
|
erstellt am: 23. Feb. 2011 10:45 <-- editieren / zitieren -->
Hi, >> Er schreibt aber "Objekt erforderlich" Auch hier wäre die Zeile, in welcher der Fehler auftritt, interessant. CADmium hat Dir das Beispiel aus der Hilfe ja schon gezeigt. Das läuft auch innerhalb AutoCAD-VBA so, ob es für Dich jetzt hilfreich ist (und aus dem >>>anderen Thread<<< jetzt meine Annahme ist, dass Du von Excel-VBA aus arbeitest), weiss ich nicht. Sollte das mit Excel stimmen, dann wäre das bei dieser Problemstellung durchaus wert, das in den ersten Threadbeitrag mit anzuführen. Der Fehler kann zustandekommen durch: a) das Objekt 'acad' wurde nicht zugewiesen b) im AutoCAD gibt es keine geöffnete Zeichnung, daher ist 'acad.ActiveDocument' = Nothing c) den Layer gibt es schon, daher konnte er nicht neu angelegt werden, daher ist das Objekt 'newlayer' = Nothing und in folge kann einem 'Nothing'-Objekt keine .Color zugewiesen werden. HTH, - alfred - ------------------ www.hollaus.at |
c.schojer Mitglied
Beiträge: 299 Registriert: 23.05.2007 Autocad 2018
|
erstellt am: 23. Feb. 2011 10:56 <-- editieren / zitieren --> Unities abgeben: Nur für marcosevim
Servus Marco ;-) so machs ich... Sub Addlayer(l) If l = vbEmpty Then l = InputBox("Layer hinzufügen") End If Call NewLayer(l, 1) End Sub Sub NewLayer(Name, Farbe) Dim NewLayer Set NewLayer = ThisDrawing.Layers.Add(Name) NewLayer.color = Farbe End Sub [Diese Nachricht wurde von c.schojer am 23. Feb. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marcosevim Mitglied Technischer Konstrukteur
Beiträge: 163 Registriert: 01.08.2007
|
erstellt am: 23. Feb. 2011 13:09 <-- editieren / zitieren --> Unities abgeben:
Danke @ all für die perfekten Vorschläge. Ja stimmt ich muss die Fehler endlich besser beschreiben. In diesem Fall Arbeite ich wieder nur im ACAD. Das Problem war das ich DIM vergessen hatte und ich musste This Drawing schreiben. Das andere hat nicht funktioniert. @ Christian: Danke für den schönene Code. Werd ich gleich kopieren. Wenn ich darf Grüsse Marco Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marcosevim Mitglied Technischer Konstrukteur
Beiträge: 163 Registriert: 01.08.2007 ACAD 2012
|
erstellt am: 23. Feb. 2011 13:29 <-- editieren / zitieren --> Unities abgeben:
|
c.schojer Mitglied
Beiträge: 299 Registriert: 23.05.2007 Autocad 2018
|
erstellt am: 23. Feb. 2011 13:48 <-- editieren / zitieren --> Unities abgeben: Nur für marcosevim
|
Ex-Mitglied
|
erstellt am: 23. Feb. 2011 13:54 <-- editieren / zitieren -->
Hi, >> Dein Code scheint dort aber nicht auf. Wieso? Es werden nur 'SUB' angezeigt, die öffentlich deklariert sind und welche keine Parameter haben (siehe Antwort von Marco), also: Public Sub AddLayer - alfred - ------------------ www.hollaus.at |
marcosevim Mitglied Technischer Konstrukteur
Beiträge: 163 Registriert: 01.08.2007
|
erstellt am: 23. Feb. 2011 14:32 <-- editieren / zitieren --> Unities abgeben:
Danke. so hab ichs jetzt hingekriegt: Code:
Sub Addlayer() Call Addlayerr(l) End Sub Sub Addlayerr(l) If l = vbEmpty Then l = InputBox("Layer hinzufügen") End IfCall newlayer(l, 1) End Sub Sub newlayer(Name, Farbe) Dim newlayer Set newlayer = ThisDrawing.Layers.Add(Name) newlayer.Color = Farbe End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
c.schojer Mitglied
Beiträge: 299 Registriert: 23.05.2007 Autocad 2018
|
erstellt am: 23. Feb. 2011 14:46 <-- editieren / zitieren --> Unities abgeben: Nur für marcosevim
Einfacher is es so Sub Addlayer_Main() Dim l l = InputBox("Layer hinzufügen") If l = "" Then 'zb bei ESC MsgBox "Kein Layername angegeben...Abbruch" Exit Sub Else Call NewLayer(l, 1) End If End Sub Sub NewLayer(Name, Farbe) Dim NewLayer Set NewLayer = ThisDrawing.Layers.Add(Name) NewLayer.color = Farbe End Sub
Das Programm so wie ichs gemacht habe is ja nur wennst mal schnell aus einem anderen Programm einen Layer hinzufügen willst Lg Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marcosevim Mitglied Technischer Konstrukteur
Beiträge: 163 Registriert: 01.08.2007
|
erstellt am: 24. Feb. 2011 10:39 <-- editieren / zitieren --> Unities abgeben:
|