Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Layer mittels Daten aus DB anlegen

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 wird von NVIDIA zum Händler des Jahres gewählt - zum dritten Mal in Folge, eine Pressemitteilung
Autor Thema:  Layer mittels Daten aus DB anlegen (1065 mal gelesen)
idraH
Mitglied



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

Beiträge: 64
Registriert: 22.04.2002

ACAD 2006
Win XP

erstellt am: 15. Jan. 2009 21:10    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,
vermutlich habe ich irgendwo einen Denkfehler.
Ich möchte verschiedene Layergruppen in einer Datenbank anlegen und von dort wieder abrufen. Der Punkt an dem meine Probleme anfangen ist folgender: Wenn ich die Daten aus der Datenbank auslese um die Layer anzulegen kommt die Strichstärke als String von der Datenbank z.B. "acLnWt050" Autocad benötigt bei der Zuordnung aber einen Wert vom Type ACAD_LWeight als Ergebnis bekomme ich folglich einen Typenkonflikt
Und hier ein Codeschnipsel hoffentlich zur Veranschaulichung:
                With DB_Layer_Var 'DB_Layer_Var ist mein Recordset aus der DB
                    For i = 0 To 2
                    .FindFirst "ID=" & Layer_Var_ID(i) 'Datensatzsuche - Layer_Var_ID enthält versch. Indexnummern zum anspringen der richtigen Datensätze für Strichstärke, Linientype...
                    Do Until .NoMatch = True
                        Layer_Var(i) = .Fields(1)
                        .FindNext "ID=" & Layer_Var_ID(i)
                    Loop
                    Next
                    Set layerObj = ThisDrawing.Layers.Add(Layer_Name)
                    With layerObj
                        .color = Layer_Farbe
                        .Description = Layer_Beschreibung
                        .Linetype = Layer_Var(1)
                        .Lineweight = Layer_Var(0) 'Layer_Var(0) wird in der ersten Schleife mit dem String aus der DB gefüllt (z.B. "acLnWt050"), hier bräuchte ich aber einen anderen Type
                    End With
                End With
Ich könnte mir vorstellen dass das irgendwie über eine Funktion laufen könnte z.B.
Function Str_To_ACLnWtX(LinienStaerke As String) As ACAD_LWEIGHT
For each LDicken in ThisDrawing.***
if LDicken.Name=LinienStaerke then
Str_To_ACLnWtX=LDicken.Value
exit functin
end if
next
end function

mit dem Aufruf:
.Lineweight = Str_To_ACLnWtX Layer_Var(0)
Gibts da sowas in der Art?
Ich hoffe das warhalbwegs verständlich?

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


Ex-Mitglied

erstellt am: 15. Jan. 2009 21:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

Du kannst die Linienstärle eines Objekts auch mit einem Integerwert zuweisen, dieser Wert entspricht 100*Linienstärke, also z.B. wenn Du einer Linie die Strichstärke von 0.05mm zuweisen willst, dann:

tLine.Lineweight = 5

Man muss aber wissen, dass nur die laut AutoCAD vordefinierten Werte zu verwenden sind.

Hoffe es hilft, - alfred -

idraH
Mitglied



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

Beiträge: 64
Registriert: 22.04.2002

ACAD 2006
Win XP

erstellt am: 15. Jan. 2009 22:30    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 Alfred,
das wäre schon eine akzeptable Lösung, da die jetzigen Werte auch dem entsprechen müssen was Autocad verwendet.

vielen Dank, damit kann ich erstmal weiterarbeiten,

Hartmut

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

idraH
Mitglied



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

Beiträge: 64
Registriert: 22.04.2002

ACAD 2006
Win XP

erstellt am: 15. Jan. 2009 22: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

Eins fällt mir dabei aber noch ein,
wie kann ich damit die Werte "ByLayer" und "ByBlock" abbilden?

viele Grüße, Hartmut

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


Ex-Mitglied

erstellt am: 15. Jan. 2009 22:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

Linetype-byLayer = -1
Linetype-byBlock = -2

- alfred -

idraH
Mitglied



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

Beiträge: 64
Registriert: 22.04.2002

ACAD 2006
Win XP

erstellt am: 15. Jan. 2009 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

Das hört sich gut an, vielen Dank

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

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2855
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2025
Plateia, Canalis
Visual Basic

erstellt am: 15. Jan. 2009 23:47    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 idraH 10 Unities + Antwort hilfreich

Meinst Du sowas ?
Code:
Function LW_Str_Val(s As String) As Integer
Dim LW As Integer
Select Case s
  Case "acLnWtByLayer"
        LW = -1
  Case "acLnWtByBlock"
        LW = -2
  Case "acLnWtByLwDefault"
        LW = -3
  Case Else
        LW = Val(Right(s, 3))
End Select
LW_Str_Val = LW
End Function

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

idraH
Mitglied



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

Beiträge: 64
Registriert: 22.04.2002

ACAD 2006
Win XP

erstellt am: 16. Jan. 2009 09:07    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 KlaK,
manchmal hat man wirklich Bretter vorm Kopf 
So kann ich beide Varianten lösen (als Typ Integer oder ACAD_LWEIGHT)
vielen Dank

PS:
Ich hatte gestern schon mal das mit den Integerwerten getestet und komischerweise wurde mein Layer bei -1 für byLayer mit -0.001 angelegt

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


Ex-Mitglied

erstellt am: 16. Jan. 2009 18:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

Du kannst zwar einem Element die Farbe 'vonLayer' geben, aber die Aussage der Layer X soll Farbe 'vonLayer' haben, geht ja auch so nicht sinnvoll

- alfred -



Anzeige:Infos zum Werbeplatz >>

AVC Fixture CAD APP für 3D, Möbel, Messestände

Plugin AVC_Fixture for AutoCAD and BricsCAD. Arrangement of fixtures along joints of solids. RTA fittings, Fasteners, Furniture hinges, Shelf holders, Hardware

idraH
Mitglied



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

Beiträge: 64
Registriert: 22.04.2002

ACAD 2006
Win XP

erstellt am: 18. Jan. 2009 22:21    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

Auch wenn es nicht um die Farbe ging, stimmt das natürlich ;-)
(kein Wunder das Autocad mir da komische Sachen draus gemacht hat)

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