Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Neuen Layer erstellen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
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


Sehen Sie sich das Profil von marcosevim an!   Senden Sie eine Private Message an marcosevim  Schreiben Sie einen Gästebucheintrag für marcosevim

Beiträge: 163
Registriert: 01.08.2007

erstellt am: 23. Feb. 2011 09:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

ACAD 2008 Mechanical

erstellt am: 23. Feb. 2011 09:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für marcosevim 10 Unities + Antwort hilfreich

aus der ACAD-Hilfe:

ADDLAYER:
    ' This example creates a new layer called "New_Layer"
    Dim layerObj As AcadLayer
   
    ' Add the layer to the layers collection
    Set layerObj = ThisDrawing.Layers.Add("New_Layer")
   
    ' Make the new layer the active layer for the drawing
    ThisDrawing.ActiveLayer = layerObj
   
    ' Display the status of the new layer
    MsgBox layerObj.name & " has been added." & vbCrLf & _
            "LayerOn Status: " & layerObj.LayerOn & vbCrLf & _
            "Freeze Status: " & layerObj.Freeze & vbCrLf & _
            "Lock Status: " & layerObj.Lock & vbCrLf & _
            "Color: " & layerObj.Color, , "Add Example"
    Return

------------------
  - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

marcosevim
Mitglied
Technischer Konstrukteur


Sehen Sie sich das Profil von marcosevim an!   Senden Sie eine Private Message an marcosevim  Schreiben Sie einen Gästebucheintrag für marcosevim

Beiträge: 163
Registriert: 01.08.2007

erstellt am: 23. Feb. 2011 09:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Ex-Mitglied

erstellt am: 23. Feb. 2011 10:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

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



Sehen Sie sich das Profil von c.schojer an!   Senden Sie eine Private Message an c.schojer  Schreiben Sie einen Gästebucheintrag für c.schojer

Beiträge: 299
Registriert: 23.05.2007

Autocad 2018

erstellt am: 23. Feb. 2011 10:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für marcosevim 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von marcosevim an!   Senden Sie eine Private Message an marcosevim  Schreiben Sie einen Gästebucheintrag für marcosevim

Beiträge: 163
Registriert: 01.08.2007

erstellt am: 23. Feb. 2011 13:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von marcosevim an!   Senden Sie eine Private Message an marcosevim  Schreiben Sie einen Gästebucheintrag für marcosevim

Beiträge: 163
Registriert: 01.08.2007

ACAD 2012

erstellt am: 23. Feb. 2011 13:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Christian,

Ich starte die Codes ur Zeit immer so das ich mittels ALT+F8 das Makro Menü öffne und dort dann auf Ausführen gehe.
Dein Code scheint dort aber nicht auf. Wieso?

Grüsse Marco

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

c.schojer
Mitglied



Sehen Sie sich das Profil von c.schojer an!   Senden Sie eine Private Message an c.schojer  Schreiben Sie einen Gästebucheintrag für c.schojer

Beiträge: 299
Registriert: 23.05.2007

Autocad 2018

erstellt am: 23. Feb. 2011 13:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für marcosevim 10 Unities + Antwort hilfreich

I denk das hängt mit dem Parameter zusammen den Du übergeben mußt sonst geht das Programm sowieso nicht

ZB
Sub Hauptprogramm
call addlayer("Meinlayer")
end sub


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 23. Feb. 2011 13:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

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


Sehen Sie sich das Profil von marcosevim an!   Senden Sie eine Private Message an marcosevim  Schreiben Sie einen Gästebucheintrag für marcosevim

Beiträge: 163
Registriert: 01.08.2007

erstellt am: 23. Feb. 2011 14:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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 If

Call 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



Sehen Sie sich das Profil von c.schojer an!   Senden Sie eine Private Message an c.schojer  Schreiben Sie einen Gästebucheintrag für c.schojer

Beiträge: 299
Registriert: 23.05.2007

Autocad 2018

erstellt am: 23. Feb. 2011 14:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für marcosevim 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von marcosevim an!   Senden Sie eine Private Message an marcosevim  Schreiben Sie einen Gästebucheintrag für marcosevim

Beiträge: 163
Registriert: 01.08.2007

erstellt am: 24. Feb. 2011 10:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz