Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  schriftfelder via lisp (ac2005)

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:  schriftfelder via lisp (ac2005) (3053 mal gelesen)
tappenbeck
Mitglied
Vermessungsingenieur


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

Beiträge: 1213
Registriert: 30.05.2002

AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net

erstellt am: 21. Dez. 2004 09:59    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

moin !

mit autocad 2005 gibt es schriftfelder - hat jemand von euch schon versucht diese via lisp anzusprechen ???

_-field gibt es nämlich nicht ??

gruß Jan :-)

------------------
jan :-)

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

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



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

Beiträge: 2490
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 21. Dez. 2004 13: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 Nur für tappenbeck 10 Unities + Antwort hilfreich

Hi Jan,
ja. Ist doch kein Problem. Schreibst einfach den Steuercode als Text rein...

------------------
Ciao,
Marc

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

tappenbeck
Mitglied
Vermessungsingenieur


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

Beiträge: 1213
Registriert: 30.05.2002

AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net

erstellt am: 21. Dez. 2004 13:44    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 marc,

ich weiß nicht, ob wir uns falsch verstanden haben - ich will keinen lispausdruck in das schriftfeld einfügen - vielmehr möchte ich ein schriftfeldelement via lisp auswählen und dann auch via lisp in der zeichnung positionieren.

ich wünsche dir frohe weihnachten und einen guten rutsch ins neue jahr. (allen anderen, die dieses lesen natürlich auch !)

gruß Jan :-)

------------------
jan :-)

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

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



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

Beiträge: 2490
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 21. Dez. 2004 13: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 tappenbeck 10 Unities + Antwort hilfreich

Hi Jan,
nein, nein. Ich glaube ich hab' Dich schon verstanden.
Aber Du mich?
Welcher Objekttyp kommt denn raus, wenn Du mit dem Command "_Field" ein Feld erzeugst?
Na?

------------------
Ciao,
Marc

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

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



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

Beiträge: 2490
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 22. Dez. 2004 09:13    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 tappenbeck 10 Unities + Antwort hilfreich

Hi Jan,
würde mich freuen auch mal IRGENDEIN Feedback von Dir auf meine Antworten zu bekommen.
Leider neigst Du dazu Dir hier Tips abzugreifen und die helfenden KOMPLETT darüber im UNKLAREN zu lassen, ob Dein Problem gelöst wurde.
Ich denke Du bist lange genug dabei um zu wissen, das dies kein guter Stil ist.

------------------
Ciao,
Marc

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 25. Aug. 2009 10:06    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 tappenbeck 10 Unities + Antwort hilfreich


linie.dwg.txt

 
Eigentlich ein ganz interessantes Thema...

wie könnte man dann einfach ein lisp zusammensetzen, wenn ich über (command "_field") die Länge einer Linie abfragen möchte.

mein Ansatz wäre
(defun c:abfrage ()
(SETQ wahl (ENTSEL "Linie wählen: ")
      element (ENTGET (command "field"))
)
)

PS.: ich muss quasi weiter manuell auswählen, dass möchte ich gern umgehen

Dirk

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

tunnelbauer
Ehrenmitglied V.I.P. h.c.
Bauingenieur



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

Beiträge: 7085
Registriert: 13.01.2004

ich hab eh keine Probleme damit...

erstellt am: 25. Aug. 2009 10:18    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 tappenbeck 10 Unities + Antwort hilfreich

Dorfy
Mitglied
Double-Dipl.-Ing. Bleistiftanspitzer


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

Beiträge: 900
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 25. Aug. 2009 10: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 Nur für tappenbeck 10 Unities + Antwort hilfreich

Hi,
was suchst du denn bzw was willst du denn genau machen?
die Länge einer Linie
(vla-Get-Length(vlax-ename->vla-object(car (entsel "\nObjekt wählen: "))))??
als field?
mehrfach ausführen --> also viele Linien und somit viele Felder?
diese automatisch einfügen?

------------------
Mfg Heiko

Elefantenjagd in Afrika
"... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..."   (www.uni-leipzig.de/~rotheh/elefant.htm)

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 25. Aug. 2009 10: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 Nur für tappenbeck 10 Unities + Antwort hilfreich

ich versuch mir quasi in den Beschriftungsmöglichkeiten mit _field etwas zusammenzustricken, womit ich einfach eine Linie wähle und deren Eigenschaften beschrifte. Bsp Länge ausgeben funktioniert.

Indem ich .length mit .layer ersetze kann ich auch den Layer assoziativ beschriften.

@dorfy:
super wäre, wenn das mit mehreren Linien geht. Allerdings müsste es den Text dann automatisch an die Linie setzen lassen (bsp Anfangspunkt). Ist das mit (getpoint "\n Select Point: ") denn möglich?

(defun c:lnkfld ()
      (setq a (car (entsel)) b (getpoint "\n Select Point: "))
      (linkedlength a b)
    )
    (vl-load-com)
    ;;get a reference to model space
    (setq *model-space*
          (vla-get-ModelSpace
            (vla-get-ActiveDocument (vlax-get-acad-object))
          )
    )
    ;;pass this function an entity and a point
    (defun LinkedLength (ent pt / obj objID ip width str)
      ;;convert the entity to an object
      (setq obj  (vlax-ename->vla-object ent)
            ;;get the object ID
            objID (vla-get-objectid obj)
            ;;convert the point
            ip    (vlax-3D-Point pt)
            ;;set the width for the MTEXT
            width 0.0
            ;;set the string - this creates the field
          str  (strcat
                    "%<\\AcObjProp.16.2 Object(%<\\_ObjId "
                    (rtos objID 2 0)
                    ">%).Length \\f \"%lu2%pr2\">%"
                  )
      )
      ;;Create the MTEXT entity containing the field.
      (vla-addMText *model-space* ip width str)
    )

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

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



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

Beiträge: 2490
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 25. Aug. 2009 11:31    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 tappenbeck 10 Unities + Antwort hilfreich

Hi cadplayer,

zum Thema "Textposition für automatische Beschriftung von Linien (Polylinien, Bögen usw.)" solltest Du Dir mal unbedingt die Funktionen die mit "vlax-curve" beginnen anschauen. Da kann man 'ne Menge Sachen bezogen auf das "Kurven Objekt" (Linien, Polylinien, Bögen usw.) ermitteln.
Beispiel:

Code:

(defun MITTEL-PKT? (ENAME /)
  (setq ENAME (->VLA-OBJECT ENAME))
  (vlax-curve-getpointatdist
    ENAME
    (/ (vlax-curve-getdistatparam
        ENAME
        (vlax-curve-getendparam ENAME)
      )
      2.0
    )
  )
)

(defun ->VLA-OBJECT (ENAME /)
  (cond
    ((= (type ENAME) 'ENAME) (vlax-ename->vla-object ENAME))
    ((= (type ENAME) 'VLA-OBJECT) ENAME)
    ('t NIL)
  )
)


(defun C:DEMO ()
  (setq XX (MITTEL-PKT? (car (entsel))))
  (command "_.circle" XX 2)
)
(c:Demo)


Zitat:
Original erstellt von cadplayer:

...super wäre, wenn das mit mehreren Linien geht. Allerdings müsste es den Text dann automatisch an die Linie setzen lassen (bsp Anfangspunkt). Ist das mit (getpoint "\n Select Point: ") denn möglich?

Nee, mit getpoint ist das eher nicht möglich, (es sei denn Du möchtest für jedes gewählte Objekt gefragt werden). Du müßtest alle gewählten Objekte in ein SelectionSet aufnehmen und dann pro Textobjekt den Text an eine berechnete oder bereits bekannte Koordinate des jeweiligen Curve-Objects ranschreiben...

------------------
Ciao,
Marc

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

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



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

Beiträge: 2490
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 25. Aug. 2009 11: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 Nur für tappenbeck 10 Unities + Antwort hilfreich

...

[Diese Nachricht wurde von marc.scherer am 25. Aug. 2009 editiert.]

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

Dorfy
Mitglied
Double-Dipl.-Ing. Bleistiftanspitzer


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

Beiträge: 900
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 25. Aug. 2009 11:42    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 tappenbeck 10 Unities + Antwort hilfreich

hi cadplayer

(defun c:lnkfld (/ aws n *model-space*)
  (vl-load-com)
  ;;get a reference to model space
  (setq *model-space*
(vla-get-ModelSpace
  (vla-get-ActiveDocument (vlax-get-acad-object))
)
  )

  ;(setq a (car (entsel))
; b (getpoint "\n Select Point: ")
; )
  ;(linkedlength a b)
  (setq aws (ssget '((0 . "LINE"))))
  (setq n 0)
  (repeat (sslength aws)
    (linkedlength
      (ssname aws n)
      (cdr (assoc 10 (entget (ssname aws n))))
    )
    (setq n (1+ n))
  )
)


;;pass this function an entity and a point
(defun LinkedLength (ent pt / obj objID ip width str)
  ;;convert the entity to an object
  (setq obj  (vlax-ename->vla-object ent)
;;get the object ID
objID (vla-get-objectid obj)
;;convert the point
ip    (vlax-3D-Point pt)
;;set the width for the MTEXT
width 0.0
;;set the string - this creates the field
str  (strcat
"%<\\AcObjProp.16.2 Object(%<\\_ObjId "
(rtos objID 2 0)
">%).Length \\f \"%lu2%pr2\">%"
      )
  )
  ;;Create the MTEXT entity containing the field.
  (vla-addMText *model-space* ip width str)
)


------------------
Mfg Heiko

Elefantenjagd in Afrika
"... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..."   (www.uni-leipzig.de/~rotheh/elefant.htm)

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 25. Aug. 2009 12:16    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 tappenbeck 10 Unities + Antwort hilfreich

Grandios - besten dank an alle ! Darauf warte ich schon seit langem.
Super gemacht
Die align-routine versuch ich mir mal selber hinzubasteln.
Meld mich mal wieder bei Änderungen, wo ich nicht so leicht durchsteige.
Alles in allem scheint es mir, kommt man mit den vlisp-funktionen schneller zum Ziel. Mapcar hat da ja einen guten Einstieg in seinem Buch gegeben.
Aber es sind halt 2 getrennte paar Schule (Autolisp - Vlisp), die man sich da aneignen muss.
Gruss Dirk

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

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



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

Beiträge: 2490
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 25. Aug. 2009 12:23    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 tappenbeck 10 Unities + Antwort hilfreich

Da war det Dorfy schneller...
Der vollständigkeit halber auch noch mal meine Lösung mit Mittelpunkt und als besonderen BonBon auch noch ein Handling für Bögen (die Haben keine Eigenschaft .Length)

Code:

(vl-load-com)

(defun C:LNKFLD (/ INDEX SELSET)
  (setq INDEX 0) ;_ Zähler für Repeat initialisieren
  (princ "\nZu beschriftende Linienobjekte wählen:")
  (if (setq SELSET (ssget '((0 . "*POLYLINE,LINE,ARC")))) ;_ Auswahlsatz mit Filter erstellen
    (repeat (sslength SELSET) ;_ Jedes Objekt des Auswahlsatzes durchgehen...
      (LINKEDLENGTH
(ssname SELSET INDEX) ;_ Name des Objekts aus Auswahlsatz ermitteln
(MITTEL-PKT? (ssname SELSET INDEX)) ;_ Koordinate an Objekt ermitteln (hier Mittelpunkt)
      )
      (setq INDEX (1+ INDEX))
    )
  )
)

;;pass this function an entity and a point
(defun LINKEDLENGTH (ENT PT / OBJ OBJID IP WIDTH STR STRPROPERTY)
  ;;convert the entity to an object
  (setq OBJ     (vlax-ename->vla-object ENT)
;;get the object ID
OBJID     (vla-get-objectid OBJ)
;;convert the point
IP     (vlax-3d-point PT)
;;set the width for the MTEXT
WIDTH     0.0
;; Handling for Arc Length
STRPROPERTY (if (= (strcase (vla-get-objectname OBJ)) "ACDBARC")
      ".ArcLength"
      ".Length"
    )
;;set the string - this creates the field
STR     (strcat
      "%<\\AcObjProp.16.2 Object(%<\\_ObjId "
      (rtos OBJID 2 0)
      ">%)"
      STRPROPERTY
      " \\f \"%lu2%pr2\">%"
    )
  )
  ;;Create the MTEXT entity containing the field.
  (vla-addmtext
    (vla-get-modelspace
      (vla-get-activedocument (vlax-get-acad-object))
    )
    IP
    WIDTH
    STR
  )
)


(defun MITTEL-PKT? (ENAME /)
  (setq ENAME (->VLA-OBJECT ENAME))
  (vlax-curve-getpointatdist
    ENAME
    (/ (vlax-curve-getdistatparam
ENAME
(vlax-curve-getendparam ENAME)
      )
      2.0
    )
  )
)

(defun ->VLA-OBJECT (ENAME /)
  (cond
    ((= (type ENAME) 'ENAME) (vlax-ename->vla-object ENAME))
    ((= (type ENAME) 'VLA-OBJECT) ENAME)
    ('t NIL)
  )
)



...

------------------
Ciao,
Marc

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

Dorfy
Mitglied
Double-Dipl.-Ing. Bleistiftanspitzer


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

Beiträge: 900
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 25. Aug. 2009 12:33    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 tappenbeck 10 Unities + Antwort hilfreich

@Marc

dafür ist dein Code um Längen besser...

------------------
Mfg Heiko

Elefantenjagd in Afrika
"... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..."   (www.uni-leipzig.de/~rotheh/elefant.htm)

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

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



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

Beiträge: 2490
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 25. Aug. 2009 12:36    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 tappenbeck 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Dorfy:

dafür ist dein Code um Längen besser...


Na ja, im Wesentlichen ist's ja derselbe. Aber danke für die Blumen ;-)

------------------
Ciao,
Marc

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

.

erstellt am: 25. Aug. 2009 12: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 tappenbeck 10 Unities + Antwort hilfreich

 
Zitat:
Original erstellt von marc.scherer:
Code:

(defun ->VLA-OBJECT (ENAME /)
  (cond
    ((= (type ENAME) 'ENAME) (vlax-ename->vla-object ENAME))
    ((= (type ENAME) 'VLA-OBJECT) ENAME)
    ('t NIL)
  )
)



was soll eigentlich das ('t NIL) ??? 

------------------
      - 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

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



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

Beiträge: 2490
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 25. Aug. 2009 12:42    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 tappenbeck 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cadplayer:
Die align-routine versuch ich mir mal selber hinzubasteln.

Mal 'n Tip was Du für automatische Positionierung noch alles berücksichtigen mußt:

# Osnap ausschalten
# WKS setzen
# Laufrichtung der zu beschriftenden Objekte ermitteln
# Textposition für zu beschriftendes Objekt relativ zum Objekt berechnen (z.B. nie "auf dem Kopf", immer darüber, in einem bestimmten Abstand)
# Eventuell Texteinfügepunkt auf "Unten, Mitte" setzen
# Ausrichtung des Textobjekts relativ zum beschriftenden Objekt (siehe Laufrichtung des Objekts)
# Alte Werte für UCS und Osnap wiederherstellen

------------------
Ciao,
Marc

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

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



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

Beiträge: 2490
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 25. Aug. 2009 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 Nur für tappenbeck 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von CADmium:
was soll eigentlich das ('t NIL) ???


Stilblüte ;-), Altlast.

------------------
Ciao,
Marc

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 26. Aug. 2009 08:06    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 tappenbeck 10 Unities + Antwort hilfreich

Mein Ansatz zum Ausrichten von Text an Linie:
1) wie schaffe ich es, dass es den Winkelwert in riwi auf den aws-text überträgt?
2) wie kann ich mtext auswählen?

(defun c:rt ()
  (SETQ wahl (ENTSEL "select line: ")
      element (ENTGET (CAR wahl))             
      anfp (CDR(ASSOC 10 element))
      endp (CDR(ASSOC 11 element))
      riwi (atof (angtos (ANGLE anfp endp) 2 10))
  ) 
;
  (if (setq obj (entsel "\select text: "))
    (progn
      (setq objname (car obj))
      (command "_change" objname "" "" "" riwi)  ; rotate text
      )
    )
  )
Gruss Dirk

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

Dorfy
Mitglied
Double-Dipl.-Ing. Bleistiftanspitzer


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

Beiträge: 900
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 26. Aug. 2009 08: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 Nur für tappenbeck 10 Unities + Antwort hilfreich

Hi Dirk,
du musst an den entsprechenden GC vom Text oder mit VL die Eigenschaft (Property Rotation?!) neu setzen.

Das hat aber nix mehr mit diesem Thread zu tun?!
INHO wäre ein neuer Thread angebracht!

Edit: In den Express-Tools gibt es Text drehen (torient), reicht das nicht?

------------------
Mfg Heiko

Elefantenjagd in Afrika
"... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..."   (www.uni-leipzig.de/~rotheh/elefant.htm)

[Diese Nachricht wurde von Dorfy am 26. Aug. 2009 editiert.]

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 26. Aug. 2009 09:06    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 tappenbeck 10 Unities + Antwort hilfreich

@Dorfy
okay hast recht, mein Gedanke ist: in die Routine noch eine Verfeinerung vorzunehmen, d.h. den generierten mtext an der gewählten Linie auszurichten. Meine Schwierigkeit bestehen darin, erstmal eine Rotation hinzubekommen. Sicher geht torient einwandfrei, aber das einzubauen fände ich Quatsch, weil ich dann nochmal die Ausrichtung manuell wählen müsste oder irre ich mich da?

D


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

Dorfy
Mitglied
Double-Dipl.-Ing. Bleistiftanspitzer


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

Beiträge: 900
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 26. Aug. 2009 10:27    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 tappenbeck 10 Unities + Antwort hilfreich

Hi Dirk,

(vla-addMText *model-space* ip width str)
;liefert dir den text

(vla-get-angle  (vlax-ename->vla-object (car (entsel)))))
;liefert dir den winkel einer linie (Bögen PL sind komplizierter)

(vla-put-rotation text winkel);text drehen

Das Zusammenbau/Anpassen bekommst du sicher auch selbst hin

------------------
Mfg Heiko

Elefantenjagd in Afrika
"... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..."   (www.uni-leipzig.de/~rotheh/elefant.htm)

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

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



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

Beiträge: 2490
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 26. Aug. 2009 11:17    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 tappenbeck 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Dorfy:
;liefert dir den winkel einer linie (Bögen PL sind komplizierter)

Da spielt aber die Laufrichtung der Linie eine erheblich Rolle ob der Text "auf dem Kopf steht".

Zu dem Zweck jage ich Winkelwerte immer durch folgende Sub-Routine:

Code:


;;; *** Sub-Pgm *** Sub-Pgm *** Sub-Pgm *** Sub-Pgm *** Sub-Pgm *** Sub-Pgm ***
;;; Unterprogramm zur Winkelkorrektur.
;;; "Normalisiert" einen Winkel so, dass er nicht "auf dem Kopf" steht!
(defun winkel-korrektur (Eingangswinkel /)
  (if (and (<= Eingangswinkel (* (/ 3.0 4.0) (* 2 pi)))
  (> Eingangswinkel (* (/ 1.0 4.0) (* 2 pi)))
      ) ;_ end of or
    (setq Eingangswinkel (+ Eingangswinkel pi))
  )
  Eingangswinkel ;_ Rückgabe des Winkels an rufende Funktion
)


Anwendungsbeispiel:

Code:

(vla-put-rotation
  (vlax-ename->vla-object (car (entsel "\nText:")))
  (WINKEL-KORREKTUR
    (vla-get-angle (vlax-ename->vla-object (car (entsel "\nLinie:"))))
  )
)


------------------
Ciao,
Marc

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

.

erstellt am: 26. Aug. 2009 11:23    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 tappenbeck 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Dorfy:

(vla-get-angle  (vlax-ename->vla-object (car (entsel)))))
;liefert dir den winkel einer linie (Bögen PL sind komplizierter)

deshalb ist vielleicht die Funktion vlax-curve-getFirstDeriv interessanter ..

------------------
  - 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

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



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

Beiträge: 2490
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 26. Aug. 2009 11:50    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 tappenbeck 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cadplayer:
2) wie kann ich mtext auswählen?

Am besten indem Du in der Funktion die den MText erzeugt (= LINKEDLENGTH) weiteres Handling für dieses Objekt einbaust:

Code:

;;pass this function an entity and a point
(defun LINKEDLENGTH (ENT PT / OBJ OBJID IP WIDTH STR STRPROPERTY OBJMTEXT)

[...]

  ;;Create the MTEXT entity containing the field.
  (setq OBJMTEXT (vla-addmtext
  (vla-get-modelspace
    (vla-get-activedocument (vlax-get-acad-object))
  )
  IP
  WIDTH
  STR
)
  )
  ;; Ab hier:
  (machwas-mit-OBJMTEXT)

  [...]



.

------------------
Ciao,
Marc

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 26. Aug. 2009 15: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 Nur für tappenbeck 10 Unities + Antwort hilfreich

Jungs und Mädels!

Ihr habt mir genügend Stoff gegeben, jetzt hoffe ich´s zu backen.

Dirk

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

snp
Mitglied


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

Beiträge: 8
Registriert: 08.08.2011

erstellt am: 15. Feb. 2012 07:42    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 tappenbeck 10 Unities + Antwort hilfreich

Hallo,

kann mir jemand dabei helfen den Code so zu bearbeiten damit auch das Material dazu ausgegeben wird.

Danke

Code:

(vl-load-com)
(defun C:LNKFLD (/ INDEX SELSET)
  (setq INDEX 0) ;_ Zähler für Repeat initialisieren
  (princ "\nZu beschriftende Linienobjekte wählen:")
  (if (setq SELSET (ssget '((0 . "*POLYLINE,LINE,ARC")))) ;_ Auswahlsatz mit Filter erstellen
    (repeat (sslength SELSET) ;_ Jedes Objekt des Auswahlsatzes durchgehen...
      (LINKEDLENGTH
(ssname SELSET INDEX) ;_ Name des Objekts aus Auswahlsatz ermitteln
(MITTEL-PKT? (ssname SELSET INDEX)) ;_ Koordinate an Objekt ermitteln (hier Mittelpunkt)
      )
      (setq INDEX (1+ INDEX))
    )
  )
)

;;pass this function an entity and a point
(defun LINKEDLENGTH (ENT PT / OBJ OBJID IP WIDTH STR STRPROPERTY)
  ;;convert the entity to an object
  (setq OBJ     (vlax-ename->vla-object ENT)
;;get the object ID
OBJID     (vla-get-objectid OBJ)
;;convert the point
IP     (vlax-3d-point PT)
;;set the width for the MTEXT
WIDTH     0.0
;; Handling for Arc Length
STRPROPERTY (if (= (strcase (vla-get-objectname OBJ)) "ACDBARC")
      ".ArcLength"
      ".Length"
    )
;;set the string - this creates the field
STR     (strcat
      "%<\\AcObjProp.16.2 Object(%<\\_ObjId "
      (rtos OBJID 2 0)
      ">%)"
      STRPROPERTY
      " \\f \"%lu2%pr2\">%"
    )
  )
  ;;Create the MTEXT entity containing the field.
  (vla-addmtext
    (vla-get-modelspace
      (vla-get-activedocument (vlax-get-acad-object))
    )
    IP
    WIDTH
    STR
  )
)


(defun MITTEL-PKT? (ENAME /)
  (setq ENAME (->VLA-OBJECT ENAME))
  (vlax-curve-getpointatdist
    ENAME
    (/ (vlax-curve-getdistatparam
ENAME
(vlax-curve-getendparam ENAME)
      )
      2.0
    )
  )
)

(defun ->VLA-OBJECT (ENAME /)
  (cond
    ((= (type ENAME) 'ENAME) (vlax-ename->vla-object ENAME))
    ((= (type ENAME) 'VLA-OBJECT) ENAME)
    ('t NIL)
  )
)


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

CADchup
Ehrenmitglied V.I.P. h.c.




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

Beiträge: 3329
Registriert: 14.03.2001

Sicher ist, dass nichts sicher ist. Selbst das nicht.
Joachim Ringelnatz

erstellt am: 15. Feb. 2012 09:05    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 tappenbeck 10 Unities + Antwort hilfreich

Hi,

du willst das Material von 2D-Objekten ausgeben?  

Grundsätzlich relativ einfach, da du fast alles hast. Du brauchst nur die Stelle, an der das Schriftfeld zusammengebaut wird, zu erweitern:

Code:
(strcat "%<\\AcObjProp.16.2 Object(%<\\_ObjId "...

Erzeuge händisch ein Schriftfeld und schau dir den Code an, der generiert wird. Zusammen mit dem oben zitierten Block solltest du das lösen können.


Viel Erfolg
CADchup

------------------
CADmaro.de

[Diese Nachricht wurde von CADchup am 15. Feb. 2012 editiert.]

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

snp
Mitglied


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

Beiträge: 8
Registriert: 08.08.2011

erstellt am: 15. Feb. 2012 11:01    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 tappenbeck 10 Unities + Antwort hilfreich

Hallo CADchup,

danke für die Antwort, jedoch komme ich in keiner Weise weiter. Vielleicht kannst Du mir weiterhelfen.

Danke und Gruß,

Peter


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

CADchup
Ehrenmitglied V.I.P. h.c.




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

Beiträge: 3329
Registriert: 14.03.2001

Sicher ist, dass nichts sicher ist. Selbst das nicht.
Joachim Ringelnatz

erstellt am: 15. Feb. 2012 11: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 Nur für tappenbeck 10 Unities + Antwort hilfreich


sf.jpg

 
Ja, aber wie weit bist du denn überhaupt gekommen?  
Kein Mensch weiß, wie viele Klammern du schon gesetzt hast.

Ok, auf dem Screenshot siehst du das Dialogfeld für die Schriftfelderzeugung. Ich habe eine Linie ausgewählt und in der mittleren Spalte "Material".
Unten im Dialog taucht daraufhin der Schriftfeldausdruck auf, wie er verwendet würde, wenn ich den Dialog bestätige.

Wichtig für dich ist das Verständnis eben dieser Zeile:
%<\AcObjProp Object(%<\_ObjId 2118207072>%).Material>%
und der Zusammenhang mit dem Lispcode der in deinem Tool verwendet wird:

Code:
;;set the string - this creates the field
STR     (strcat
      "%<\\AcObjProp.16.2 Object(%<\\_ObjId "
      (rtos OBJID 2 0)
      ">%)"
      STRPROPERTY
      " \\f \"%lu2%pr2\">%"
    )
  )

Der erste Teil der Zeichenkette ist identisch, dann kommt die Object ID, dann obligatorische Steuerzeichen, dann die Eigenschaft, die abgerufen werden soll und wieder Steuerzeichen.


Gut. Angenommen, du willst im Schriftfeld eine zweite Zeile für das Objektmaterial haben, dann hängst du als letzte Zeichenkette (also vor die schließende Klammer des strcat!) zunächst ein "\n" an. Das sorgt für einen Zeilenumbruch.
Danach kopierst du einfach die ersten drei Zeilen des schon vorhandenen Schriftfeldcodes und hängst zuletzt den entsprechenden Schluss für das Material an. Wie der auszusehen hat, haben wir im Schriftfeld-Dialog gesehen.

Gruß
CADchup

------------------
CADmaro.de

[Diese Nachricht wurde von CADchup am 15. Feb. 2012 editiert.]

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

snp
Mitglied


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

Beiträge: 8
Registriert: 08.08.2011

erstellt am: 15. Feb. 2012 11: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 tappenbeck 10 Unities + Antwort hilfreich

Hallo CadChup,

leider komme ich nicht weiter:

Hier der Code dem ich erstellt habe --> FEHLER: Falsch platzierter Punkt in Eingabe

auf das "\n" habe ich bewusst verzichtet, möchte alles in einer Zeile mit einen "; " getrennt haben.

;;set the string - this creates the field
STR     (strcat
      "%<\\AcObjProp.16.2 Object(%<\\_ObjId "
      (rtos OBJID 2 0)
      ">%)"
      STRPROPERTY
      " \\f \"%lu2%pr2\">%"
    )
      "%<\\AcObjProp.16.2 Object(%<\\_ObjId "
      (.Material)
      ">%)"
  )

[Diese Nachricht wurde von snp am 15. Feb. 2012 editiert.]

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

neurosis
Mitglied
dipl.ing.


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

Beiträge: 222
Registriert: 22.08.2006

erstellt am: 15. Feb. 2012 12:23    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 tappenbeck 10 Unities + Antwort hilfreich

hallo peter,
auf jeden fall muss das
Zitat:
(.Material)

ein string sein
".Material"

ob der rest richtig ist weiss ich nicht.

gruss
marco

------------------
Marco Heuer
www.arc-aachen.de
Airport Office

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 15. Feb. 2012 12:40    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 tappenbeck 10 Unities + Antwort hilfreich

Der Rest ist leider auch nicht richtig, es fehlt die Hälfte.

@snp
Wo ist die ObjektID für das zweite Schriftfeld geblieben in deinem Versuch ?

------------------
CAD.de System-Angaben  -  CAD on demand  -  User:FAQ(Acad)

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

CADchup
Ehrenmitglied V.I.P. h.c.




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

Beiträge: 3329
Registriert: 14.03.2001

Sicher ist, dass nichts sicher ist. Selbst das nicht.
Joachim Ringelnatz

erstellt am: 15. Feb. 2012 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 tappenbeck 10 Unities + Antwort hilfreich

Das ist doch schon mal ein Anfang.

Schreibst du das im VLIDE? Da könntest du durch Doppelklicks auf Klammern prüfen, wo sie öffnen, bzw. schließen. Außerdem würdest du die verschiedenen Datentypen gut erkennen können.

Wenn du die (strcat...-Klammer prüfst, siehst du, dass sie zu früh, unterhalb des alten Schriftfelds, wieder geschlossen wird: Das zweite Schriftfeld soll noch miteingebaut werden. Ersetze also die erste schließende Klammer durch dein Trennzeichen ";"
Womit wir beim Thema Datentypen wären. Die Funktion strcat fügt Zeichenketten zusammen; Zeichenketten sind alles, was in Anführungszeichen steht! Dein (.Material) sollte also ein ".Material" sein.

Weiter vorne fehlt dir außerdem noch die Definition der Object-ID. Die hast du anscheinend vergessen vom ersten Schriftfeld zu kopieren.

Fertig.

------------------
CADmaro.de

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

snp
Mitglied


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

Beiträge: 8
Registriert: 08.08.2011

erstellt am: 23. Jan. 2013 09:42    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 tappenbeck 10 Unities + Antwort hilfreich

Hallo,

tut mir leid das ich so einen alten Beitrag aufrolle.

Kann mir jemand sagen wo ich die Schriftgröße und die Ausrichtung ändern kann. Habe mir die LSP was den Text angeht an meine Bedürfnisse angepasst, leider weiß ich nicht wo ich die Größe und Ausrichtung (Mitte zentriert) ändern kann.

hier die LSP:

(vl-load-com)

(defun C:LNKFLD (/ INDEX SELSET)

  (setq INDEX 0) ;_ Zähler für Repeat initialisieren
  (princ "\nZu beschriftende Linienobjekte wählen:")
  (if (setq SELSET (ssget '((0 . "*POLYLINE,LINE,ARC")))) ;_ Auswahlsatz mit Filter erstellen
    (repeat (sslength SELSET) ;_ Jedes Objekt des Auswahlsatzes durchgehen...
      (LINKEDLENGTH
(ssname SELSET INDEX) ;_ Name des Objekts aus Auswahlsatz ermitteln
(MITTEL-PKT? (ssname SELSET INDEX)) ;_ Koordinate an Objekt ermitteln (hier Mittelpunkt)
      )
      (setq INDEX (1+ INDEX))
    )
  )
)

;;pass this function an entity and a point
(defun LINKEDLENGTH (ENT PT / OBJ OBJID IP WIDTH STR STRPROPERTY)
  ;;convert the entity to an object
  (setq OBJ    (vlax-ename->vla-object ENT)
;;get the object ID
OBJID    (vla-get-objectid OBJ)
;;convert the point
IP    (vlax-3d-point PT)
;;set the width for the MTEXT

WIDTH    0.0
MTextHeight 50.0

;; Handling for Arc Length
STRPROPERTY (if (= (strcase (vla-get-objectname OBJ)) "ACDBARC")
      ".ArcLength"
      ".Length"
    )
;;set the string - this creates the field
STR    (strcat
      "%<\\AcObjProp.16.2 Object(%<\\_ObjId "
      (rtos OBJID 2 0)
      ">%)"
      STRPROPERTY
      " \\f \"%lu2%pr2%ps[d20; , m]%ct8[0.01]\">%"
    )
  )
  ;;Create the MTEXT entity containing the field.

  (vla-addmtext
    (vla-get-modelspace
      (vla-get-activedocument (vlax-get-acad-object))
    )
    IP
    WIDTH
    STR
  )
)

(defun MITTEL-PKT? (ENAME /)
  (setq ENAME (->VLA-OBJECT ENAME))
  (vlax-curve-getpointatdist
    ENAME
    (/ (vlax-curve-getdistatparam
ENAME
(vlax-curve-getendparam ENAME)
      )
      2.0
    )
  )
)

(defun ->VLA-OBJECT (ENAME /)
  (cond
    ((= (type ENAME) 'ENAME) (vlax-ename->vla-object ENAME))
    ((= (type ENAME) 'VLA-OBJECT) ENAME)
    ('t NIL)
  )
)

Danke, Gruß

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 23. Jan. 2013 13:23    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 tappenbeck 10 Unities + Antwort hilfreich

... du musst das erzeugte MText-Objekt merken und kannst diesem dann mit (vla-put-... ) weitere Eigenschaften setzen.

Grüße!
Holger

------------------
Holger Brischke
FREIE SCHULUNGSPLÄTZE -- C#.NET-Schulung im Mai 2013 Bei Interesse bitte melden!
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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

snp
Mitglied


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

Beiträge: 8
Registriert: 08.08.2011

erstellt am: 23. Jan. 2013 14: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 Nur für tappenbeck 10 Unities + Antwort hilfreich

Hallo,

danke für die Antwort, habe aber keine Ahnung von LSP-programmieren.

Ist hier jemand der mir diese LSP um die Funktion Schriftgröße, Ausrichtung erweitern kann, Bitte.

Danke, Gruß

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 23. Jan. 2013 14:58    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 tappenbeck 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von snp:
Hallo,

danke für die Antwort, habe aber keine Ahnung von LSP-programmieren.

Ist hier jemand der mir diese LSP um die Funktion Schriftgröße, Ausrichtung erweitern kann, Bitte.

Danke, Gruß


Da gibt's hier sicher einige, die das machen könnten und vielleicht auch tun.
Ich finde es aber unehrlich, dass man hier scheinheilig eine Frage verfasst, in der Hoffnung, dass schon irgendjemand die Lösung mundgerecht einbauen wird. Wiederum ehrlich finde ich, auch noch zuzugeben, dass man keine Ahnung hat und auch nicht vor hat, sich Wissen in dieser Richtung anzueigenen. Da folglich immer noch darauf gehofft wird, dass jemand die fertige Lösung postet, sei mir der Hinweis erlaubt, dass das Forum für die Diskussion von Programmierthemen gedacht ist.
Dass man keine Ahnung hat, ist kein Problem. Beim Wunsch, diesen Zustand zu ändern, wird dir hier sicher geholfen.

Grüße!
Holger

------------------
Holger Brischke
FREIE SCHULUNGSPLÄTZE -- C#.NET-Schulung im Mai 2013 Bei Interesse bitte melden!
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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