Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  noch mal die Frage nach dem Layereigenschaften-Filter

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
  
PNY präsentiert die PRO Elite™ High Endurance microSD-Flash-Speicherkarten für Videoüberwachung und kontinuierliche Aufzeichnung, eine Pressemitteilung
Autor Thema:  noch mal die Frage nach dem Layereigenschaften-Filter (1242 mal gelesen)
CADOpa
Mitglied
Selbständig


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

Beiträge: 10
Registriert: 24.10.2005

erstellt am: 31. Okt. 2005 01:15    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 Ihr Wissenden...
ich bin an einer Programmierung zur Arbeit mit einer gesunden Layerstruktur - eigentlich nicht so schwer, aber nun möchte ich gerne das was ich im Layer-Eigenschaften-Manager manuell machen kann - nämlich einen Eigenschaftenfilter einrichten auf "Layer On", der dazu führt, dass wenn ich meine eingerichteten Werkzeuge bediene immer nur die Layer in der Layersteuerung auftauchen, die zum jeweiligen Arbeitsbereich gehören. Das Anlegen der Layerstruktur und die Festlegung der Arbeitsbereiche sowie die zugehörigen Werkzeuge habe ich. Im Moment aber muss ich in jeder Datei den Filter manuell einrichten und das aktivsetzen des Filters. Hat einer einen Hinweis?

------------------
Die Zukunft ist nicht mehr was sie einmal war - was ein Glück - gibt es uns

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

Stelli1
Moderator
Verm.-Ing.


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

Beiträge: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 03. Nov. 2005 18:02    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 CADOpa 10 Unities + Antwort hilfreich

Hallo,

Beschreib doch mal was du genau machen willst und wie die Layer organisiert werden sollen. Vielleicht kann man dann eine Lösung finden.

Stelli

------------------
Warum lisp'eln wenn's auch anders geht.

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

Stelli1
Moderator
Verm.-Ing.


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

Beiträge: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 04. Nov. 2005 18:52    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 CADOpa 10 Unities + Antwort hilfreich

Hallo,

zum Filtern gibts in meiner Version nichts (oder wieder mal nicht gefunden).

Schau doch mal in deiner Version nach folgendem:

Code:

Sub Example_SetDatabase()
    ' The following code saves the color and linetype settings
    ' of the current layer. It uses the SetDatabase method to
    ' associate the current drawing database with the
    ' LayerStateManager object.

    Dim oLSM As AcadLayerStateManager

    ' Access the LayerStateManager object
    Set oLSM = ThisDrawing.Application. _
      GetInterfaceObject("AutoCAD.AcadLayerStateManager.16")

    ' Associate the current drawing database with LayerStateManager
    oLSM.SetDatabase ThisDrawing.Database

    oLSM.Save "ColorLinetype", acLsColor + acLsLineType

End Sub



Das 2005 und 2006 kann wohl mehr.

Stelli

------------------
Warum lisp'eln wenn's auch anders geht.

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

CADOpa
Mitglied
Selbständig


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

Beiträge: 10
Registriert: 24.10.2005

erstellt am: 05. Nov. 2005 10:24    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 Stelli,

Also der Fall ist der...
Wir bekommen häufig Pläne von großen Gebäuden um unsere Gewerke dort einzuplanen. Nun haben die Pläne schon sehr viele Layer, die sehr synonym benannt sind. Um die Planungsarbeit zu erleichtern habe ich eine Layerstruktur festgelegt, die in den ersten 5 Zeichen die Firma, den Arbeitsbereich des jeweiligen Gewerk´s festlegt.
X1_SUnrein...
X2_SRein...  usw.
Nun habe ich 5 Werkzeuge mit denen ich wenn der Eigenschaftenfilter im LayerManager festgelegt ist auf X?_S die Möglichkeit zwischen den Bereichen so umzuschalten, dass der Anwender in der Layersteuerung bei der Auswahl des aktiven Layers nur die Layer des aktiven Arbeitsbereiches sieht - du verstehst?
Die Einrichtung der Layerstruktur, das Umschalten über die Werkzeuge, das funzt - aber die Festlegung der Filter für die Arbeitsbereiche und das jeweilige Aktivieren des richtigen Filter´s muss in jeder Zeichnung "neu" angelegt und manuell umgeschaltet werden. Nun habe ich in der Dokumentation nirgends einen konkreten Hinweis gefunden, welche Befehle, Parameter oder Routinen ich verwenden kann um das in VBA zu meinem Programm zu ergänzen, so, dass bei Einrichten der Layerstruktur die Filter definiert werden und bei Betätigung des jeweiligen Werkzeuges der richtige Filter aktivgesetzt wird.

Was verbirgt sich übrigens hinter oLSM , wofür steht o? in deinem Beispiel.

Danke erst mal für deine Breitschaft sich der Sache mal anzunehmen..

------------------
Die Zukunft ist nicht mehr was sie einmal war - was ein Glück - gibt es uns

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

Stelli1
Moderator
Verm.-Ing.


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

Beiträge: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 05. Nov. 2005 19: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 Nur für CADOpa 10 Unities + Antwort hilfreich

Hallo,
Zitat:

Was verbirgt sich übrigens hinter oLSM , wofür steht o? in deinem Beispiel.


wie schon gesagt, ich habe mit dem Layermanager noch nichts gemacht. Das Beispiel kommt aus der Hilfe von 2004. oLSM heisst wohl ObjektLayerStateManager.

Aber die Frage ist wie legst du deine Layerstrukturen an ? Mit VBA oder Lisp oder anders?

Wenn du es mit VBA machst würde ich mr eventuell eine Funktion basteln die mir die gewünschten Gewerke ein- und ausschaltet.

Beispíel (ungetestet)

Code:

Public WorkspaceState (0 to 10) as boolean

Function ChangeWorkspaceState (Workspace as integer) as boolean
dim WorkspacePattern (0 to 10) as String
dim Layer as ACADLAYER
WorkspacePattern(1) = "X1"
WorkspacePattern(2) = "X2"
' ...
    for each Layer in Thisdrawing.Layers
        if left(layer.name,lenght(WorkspacePattern)) = WorkspacePattern(Workspace) then
          Layer.Freeze = WorkspaceState(Workspace) xor true
        end if
    next Layer
end function


 

Stelli

------------------
Warum lisp'eln wenn's auch anders geht.

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

CADOpa
Mitglied
Selbständig


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

Beiträge: 10
Registriert: 24.10.2005

erstellt am: 05. Nov. 2005 22:34    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

Welche Version hast Du, ich arbeite mit MechanicalDesktop auf AutoCAD2005.

die Frage von vorhin hat sich erledigt, ist ja bloß die Variable...

übrigens habe ich mal auf einer 2004er Version nachgeschaut - in der reinen AutoCAD-Ebene lassen sich die _Filter auch aufbauen und für die Werkzeugkisten (sprich Anzeige Layersteuerung) einschalten. Im Mechdesktop hingegen nicht.

Den Bereich, den du mir genannt hast, schaue ich mir gerade etwas genauer an. Wenn ich dahinterkomme, sag ich Bescheid.

Haben wir auch jemand im Forum auf ACAD2005 - ich meine einen Moderator vielleicht ?

------------------
Die Zukunft ist nicht mehr was sie einmal war - was ein Glück - gibt es uns

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

CADOpa
Mitglied
Selbständig


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

Beiträge: 10
Registriert: 24.10.2005

erstellt am: 05. Nov. 2005 22: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


DerLayereigenschaftenManagervon2005unddie.zip

 
noch was...
Dein Vorschlag ist nur dann anwendbar, wenn man "nur seine eigenen'" Inhalte sehen will. Wenn ich aber die Wände, die der Architekt gezeichnet hat in der Zeichnung brauche, kann ich deren Layer nicht ausschalten oder einfrieren - ich muss sie nur für die Steuerung unsichtbar (über Namenskonvention) machen. Im Anhang eine bebilderte Beschreibung....

------------------
Die Zukunft ist nicht mehr was sie einmal war - was ein Glück - gibt es uns

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

Stelli1
Moderator
Verm.-Ing.


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

Beiträge: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 06. Nov. 2005 13:04    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 CADOpa 10 Unities + Antwort hilfreich

Hallo,

ich setze zur Zeit acad2004 ein.

Wie du die Layerfilter anlegst weiss ich nicht.

Ich habe nur eine Möglichkeit gefunden den Inhalt eines Layerfilters zu beinflussen. Er muss aber vorhanden sein.

Beispiel ändert den Layerfilter "Current" auf Layermuster "X1*"

Code:

Sub test()

    Dim LayersCol As AcadLayers
    Dim LayerDic As AcadDictionary
    Dim LayerFilterCol As Variant
    Dim LayerFilter As Variant
    Dim xType As Variant
    Dim xData As Variant
   
    Set LayersCol = ThisDrawing.layers
    Set LayerDic = LayersCol.GetExtensionDictionary
    Set LayerFilterCol = LayerDic.Item("ACAD_LAYERFILTERS")
   
    For Each LayerFilter In LayerFilterCol
        Debug.Print LayerFilter.Name
       
        LayerFilter.GetXRecordData xType, xData
        If UCase(LayerFilter.Name) = "CURRENT" Then
          Debug.Print xData(1)
          xData(1) = "X1*"
          LayerFilter.SetXRecordData xType, xData
        End If
    Next LayerFilter

End Sub



Stelli

------------------
Warum lisp'eln wenn's auch anders geht.

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

CADOpa
Mitglied
Selbständig


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

Beiträge: 10
Registriert: 24.10.2005

erstellt am: 13. Nov. 2005 12:43    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 Stelli,

Erst mal ganz vielen Dank für deine Hilfe, es waren gute Denkanstöße.
Die letzte Routine werd ich mal versuchen umzusetzen....und werde berichten.
Habe diese Woch viel am Bein gehabt und bin gar nicht ins Internet gekommen. War viel unterwegs...
Ich habe diese Woche die Sache mal anders angepackt. Ich habe ein seperates Dialogfenster(ViewList) zur Auflistung der gefilterten Layer generiert, die entsprechenden Filter über Auswahlknöpfe integriert und schließlich eine mögliche Abfrage gesetzt um innerhalb des jeweils aktivierten Arbeitsbereich die Layer auch umschalten zu können. Ich will Dich natürlich nicht mit meinem Kram belasten, aber wenn du willst, schicke ich dir mal meinen Lösungsansatz zu. Ich hänge ihn jetzt nicht in die Anlage, da die Routine für innerbetriebliche Zwecke gedacht ist. Also bei Interesse per Mail.
ps - 10 Punkte
mfg CADOpa

------------------
Die Zukunft ist nicht mehr was sie einmal war - was ein Glück - gibt es uns

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

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)2025 CAD.de | Impressum | Datenschutz