Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Linien bestimmter Layer beschriften

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:  Linien bestimmter Layer beschriften (1880 mal gelesen)
danie8778
Mitglied


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

Beiträge: 2
Registriert: 12.03.2011

erstellt am: 12. Mrz. 2011 20:28    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 Community,

ich möchte Linien einer bestehenden Zeichnung mit der Ausrichtung in z beschriften. Allerdings sollen nur Linien bestimmter Layer beschriftet werden. Wie kann ich das nun anstellen. Im Moment bin ich nur soweit, das mir alle Linien der gesamten Zeichnung beschriftet werden. Hier nun mein bestehender Code.

Grüße Daniel.

Code:

Sub text_auf_linieNEU()


Dim Pkt As Variant
Dim Höhe As Double
Dim txt As AcadText
Dim Texthoehe As Double
Dim spoint As Variant
'Dim epoint As Variant
'Dim mpoint(0 To 2) As Double
Dim obj As AcadEntity


For Each obj In ThisDrawing.ModelSpace

If TypeOf obj Is AcadLine Then
   
               
   
    spoint = obj.startpoint
    'epoint = obj.endpoint
   
    'mpoint(0) = (spoint(0) + epoint(0)) / 2
    'mpoint(1) = (spoint(1) + epoint(1)) / 2
    'mpoint(2) = (spoint(2) + epoint(2)) / 2

    Höhe = spoint(2)
    Texthoehe = 20
   
   
    Set txt = ThisDrawing.ModelSpace.AddText(Round(Höhe, 2), spoint, Texthoehe)
    txt.Rotate spoint, obj.Angle
    txt.Alignment = acAlignmentCenter
    txt.TextAlignmentPoint = spoint
   
   

End If

Next obj

End Sub


[Diese Nachricht wurde von danie8778 am 13. Mrz. 2011 editiert.]

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


Ex-Mitglied

erstellt am: 12. Mrz. 2011 21:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

herzlich willkommen bei CAD-de! 

Wenn die Frage ist, wie kann ich nur die Linien auf einem bestimmten Layer beschriften, dann bau eine IF-Abfrage ein, z.B.:

If obj.Layer = "MeinLinienLayerName" then

Der Performance wegen würde ich aber zuerst ein SelectionSet machen, das nur Linien auf Deinem Layer selektiert, dann brauchst Du nachher nur die Objekte im SelectionSet durchgehen, dabei nicht mehr prüfen, ob es eine Linie ist und ob es am richtigen Layer ist. Geht schneller als den ganzen Modellbereich durchzuscannen.

Ein Beispiel für Filterung und SelectionSet findest Du >>>hier<<<

HTH, - alfred -

------------------
www.hollaus.at

danie8778
Mitglied


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

Beiträge: 2
Registriert: 12.03.2011

erstellt am: 12. Mrz. 2011 21:49    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,

danke für die schnelle Antwort. Manchmal ist die Lösung einfach zu nahe liegend.
Da hätte ich auch selbst drauf kommen können. Aber als VBA Anfänger....   

Edit: Den Beitrag mit dem SelectionSet hab ich auch schon gefunden. Nur leider bin ich da nicht ganz durchgestiegen.

[Diese Nachricht wurde von danie8778 am 12. Mrz. 2011 editiert.]

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


Ex-Mitglied

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

Hi,

>> Den Beitrag mit dem SelectionSet hab ich auch schon gefunden.
>> Nur leider bin ich da nicht ganz durchgestiegen.

Code:
Dim tSelSet as AcadSelectionSet

On Error Resume Next
Set tSelSet = ThisDrawing.SelectionSets.Add("SelSetMyLines")
If Err.Number <> 0 Then
  Set tSelSet = ThisDrawing.SelectionSets("SelSetMyLines")
  tSelSet.Clear
End If
On Error Goto 0

Dim tDxfCodes(2) As Integer
Dim tDxfValues(2) As Variant
tDxfCodes(0) = 0: tDxfValues(0) = "LINE"                'nur Linien
tDxfCodes(1) = 8: tDxfValues(1) = "MeinLinienLayerName"  'nur dieser Layer
tDxfCodes(2) = 410: tDxfValues(2) = "Model"              'nur Modellbereich

'und dann kannst Du mit diesem Filter die Selektion machen
tSelSet.Select acSelectionSetAll, , , tDxfCodes, tDxfValues

if tSelSet.Count > 0 then
  dim tLine as AcadLine
  for each tLine in tSelSet
    'und da kannst Du jetzt Deine Beschriftung setzen
  next
end if


Viel Erfolg, - alfred -

------------------
www.hollaus.at

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