Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Field Text will nicht

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:  Field Text will nicht (405 / mal gelesen)
WolfTempler
Mitglied
Bauzeichner

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

Beiträge: 3
Registriert: 02.12.2021

AutoCAD 2019

erstellt am: 02. Dez. 2021 09: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

Hallo ans FachForum,

Vll kann mir jemand Helfen, den Knoten im Kopf zu befreien   . Ich versuche eine Simple Tool zu erstellen, um Flächen auszuspucken (So wie von CAD Wiesel Fla-neu).
Ich würde das gerne mit Fields verknüpfen, aber da ist der Knoten. Ich bekomme lediglich den Text als Field angezeigt -> %<\AcObjProp Object(%<\_Ob... ect.
Wen ich drauf zugreife geht er in das Typische Objekt nicht gefunden Text ####.
RG/RGall hat nicht geholfen und ich habe noch eine 2 Lisp wo dies aber zu 100% funktioniert.
Bei Lisp sind am gleichen Rechner Getestet.
Vll weis jemand warum das nicht Funktioniert.
(oder jemand wird aus meinem Kauderwelsch schlau)

(Da wo es nicht geht)

Code:
(defun c:ObjFläche (/ obj hgt)
  (vl-load-com)
  (setq hgt (getstring "\nText Höhe? :"))
(while
  (if
    (setq obj (ssget "_:S" '((0 . "*Polyline,arc,circle"))))
     (entmakex
       (list (cons 0 "MText")
     (cons 100 "AcDbEntity")
     (cons 100 "AcDbMText")
     (cons 10 (getpoint "Text absetzen: "))
     (cons 40 (atoi hgt))
     (cons 1
   (strcat "%<\\AcObjProp Object(%<\\_ObjId  "
   (Get-ObjectIDx64 (ssname obj 0))
   ">%).Area\\f\"%lu2%pr2\">%"
   );strcat
   )
     )
       )
     (print "\n Try again!")
     )
  )
)

;;;***************************************************************************
;;;**********************Gekaut von By Jimmy Bergmark*************************
(defun Get-ObjectIDx64 (obj / util)
  (setq util (vla-get-Utility
       (vla-get-activedocument (vlax-get-acad-object))
       )
)
  (if (= (type obj) 'ENAME)
    (setq obj (vlax-ename->vla-object obj))
    )
  (if (= (type obj) 'VLA-OBJECT)
    (if (> (vl-string-search "x64" (getvar "platform")) 0)
      (vlax-invoke-method
util
"GetObjectIdString"
obj
:vlax-False
)
      (rtos (vla-get-objectid obj) 2 0)
      )
    )
  )


(da wo es geht)

Code:
;;;***********************************************************************
;;;***********************************************************************
;;;        **
;;; -== NovaConverter ==-        **
;;; Ersetzt Texte zu einem Raumtempel_Block mit Polylinie  **
;;; Verknüpfung und Setzt User eingabe vor der Alten Raumnummer **
;;;        **
;;; Utxt -> User Eingabe [Usereingabe] + [Text].        **
;;; Ans -> Auswahlverfahren [Irgendwo anders benutzbar?]   **
;;; sstext -> Alle Texte die das Kriterium Erfülle.        **
;;; ni -> Zähler        **
;;; ptxt -> Cordi des Aktuellen Textes.        **
;;;               **
;;;***********************************************************************
;;;***********************************************************************

;;;Startet die Lisp (Für änderungen so geschrieben)
(defun c:NovaConverter (/ ans )
  (initget 1 "Alle Wahl ")
  (setq ans (strcase (getkword "\nVerfahren wälen [Alle/Wahl] : "))
ms (getvar "Millisecs")
)
  (cond
    ((eq ans "ALLE") (NovaConverterstart  ans ms))
    ((eq ans "WAHL") (NovaConverterstart  ans ms))
    ((eq ans "Mehrfach") (NovaBatch!!!!!))
    )
  )
;;;***********************************************************************
(Defun NovaConverterstart (ans ms / Utxt sstxt Nci ptxt ms)
  (vl-load-com)
  (errorgo (list '("cmdecho" 0)
'("dynmode" 1)
'("Attdia" 0)
'("dynmode" 1)
'("Attreq" 1)
'("INSUNITS" 0)
'("INSUNITSDEFSOURCE" 0)
'("INSUNITSDEFTARGET" 0)
)
   )
  (if (tblsearch "Block" "B_Raumstempel")
    (print "Block ist schon Vorhanden")
    (progn (Entmakblk)
   (print "Block wurde geladen")
   )
    )
  (setq Utxt (getstring "\nHaus + . : ")
NCi  0
)
  (cond
    ((eq ans "ALLE")
     (progn (setq sstxt (ssget "_X"
       '((-4 . "<OR")
(8 . "*Raum*")
(8 . "B_Fläche")
(-4 . "OR>")
(0 . "Text*")
)
       )
  )
    )
     ) ;ALL
    ((eq ans "WAHL")
     (progn (Setq sstxt (ssget '((-4 . "<OR")
(8 . "*Raum*")
(8 . "B_Fläche")
(-4 . "OR>")
(0 . "Text*")
)
       )
  )
    )
     )
    ) ;Cond
  (repeat (sslength sstxt)
    (setq ptxt    (Cdr (assoc 10 (entget (ssname sstxt NCi))))


  Polylink (strcat
     "%<\\AcObjProp Object(%<\\_ObjId  "
     (Get-ObjectIDx64 (caar (lookPol (ssname sstxt NCi))))
     ">%).Area \\f \"%lu2%pr2\">%"
     )
  )
    (command-s
      "_.-Insert"
      "B_Raumstempel"
      ptxt
      1
      1
      (/ (* (vla-get-rotation
      (vlax-ename->vla-object (ssname sstxt NCi))
      )
    180
    )
pi
)
      ""
      (strcat Utxt (cdr (assoc 1 (entget (ssname sstxt NCi)))))
      Polylink
      ) ;Comand
    (Line ptxt
  (vlax-curve-getclosestpointto
    (caar (lookPol (ssname sstxt NCi)))
    ptxt
    )
  )
    (Setq NCi (+ NCi 1))
    )
  (errorEnd)
  (setq ms (- (getvar "Millisecs") ms ))
  (print (strcat "Es hatt " (itoa (/ ms 1000)) " Sekunden gedauert"))
  (print "\FERTIG!")
  (print)
  ) ;defun

;;;***************************************************************************
;;;      *
;;; Wandelt eine Selection Set in eine Liste um      *
;;;      *
;;;***************************************************************************

(defun ss->list (a / i ssl)
  (Setq i 0)
  (repeat (- (sslength a) 1)
    (setq ssl (append ssl (list (ssname a i)))
  i   (+ 1 i)
  )
    )
  ssl
  )

;;;***************************************************************************
;;;      *
;;; Gibt die Cordinaten und Ename aus      *
;;;      *
;;;***************************************************************************

(defun List->Cordi (pl)
  (mapcar 'cdr
  (vl-remove-if-not
    '(lambda (x)
       (= (car x) 10)
       )
    pl
    )
  )
  )

;;;***************************************************************************
;;;      *
;;; Sucht das nächst liegende Objekt      *
;;;      *
;;;***************************************************************************

(defun lookPol (pt / ssobj txtpoi ssobj txtpoi x)
  (setq ssobj  (ss->list
(ssget "_X" '((0 . "*Polyline*") (8 . "B_Fläche")))
)
txtpoi (cdr (assoc 10 (entget pt)))
)
  (vl-sort
    (mapcar '(Lambda (x)
       (list x
     (distance txtpoi
       (vlax-curve-getclosestpointto x txtpoi)
       )
     )
       )
    ssobj
    )
    '(lambda (a b) (< (car (cdr a)) (car (cdr b))))
    )
  )

;;;***************************************************************************
;;;**********************Gekaut von By Jimmy Bergmark*************************
(defun Get-ObjectIDx64 (obj / util)
  (setq util (vla-get-Utility
       (vla-get-activedocument (vlax-get-acad-object))
       )
)
  (if (= (type obj) 'ENAME)
    (setq obj (vlax-ename->vla-object obj))
    )
  (if (= (type obj) 'VLA-OBJECT)
    (if (> (vl-string-search "x64" (getvar "platform")) 0)
      (vlax-invoke-method
util
"GetObjectIdString"
obj
:vlax-False
)
      (rtos (vla-get-objectid obj) 2 0)
      )
    )
  )
;;;**************************************************************************************
(defun Line (p1 p2)
  (entmakex (list (cons 0 "LINE")
  (cons 8 "Obj_TO_Poly")
  (cons 62 1)
  (cons 420 15835136)
  (cons 10 p1)
  (cons 11 p2)
  )
    )
  )

;;;***************************************************************************
(Defun Entmakblk (/)
  (entmake
    (list (cons 0 "BLOCK")
  (cons 2 "B_Raumstempel")
  (cons 8 "B_Raumstempel")
  (list 10 0 0)
  (cons 70 2)
  )
    ) ;Block
  (entmake
    (append
      (list '(0 . "LWPOLYLINE")
    '(100 . "AcDbEntity")
    '(100 . "AcDbPolyline")
    (cons 8 "B_Raumstempel")
    (cons 90 4)
    (cons 70 1)
    )
      (mapcar (function (lambda (x) (cons 10 x)))
      '((0.0 0.794658)
(1.80053 0.794658)
(1.80053 0.0)
(0.0 0.0)
)
      )
      )
    ) ;LW Poly
  (entmake
    (list
      '(0 . "ATTDEF")
      '(100 . "AcDbEntity")
      (cons 8 "B_Raumstempel")
      '(100 . "AcDbText")
      '(10 0.081435 0.598051 0.0)
      '(40 . 0.15)
      '(7 . "Klinikum1")
      '(1 . "")
      '(100 . "AcDbAttributeDefinition")
      '(280 . 0)
      '(3 . "")
      '(2 . "RAUM-ID_NEU")
      '(70 . 0)
      '(73 . 0)
      '(74 . 0)
      '(280 . 1)
      )
    ) ;ATT Raum-ID
  (entmake
    (list
      '(0 . "ATTDEF")
      '(100 . "AcDbEntity")
      '(100 . "AcDbText")
      '(10 0.081435 0.34805 0.0)
      '(40 . 0.15)
      '(7 . "Klinikum1")
      (cons 8 "B_Raumstempel")
      '(1 . "")
      '(100 . "AcDbAttributeDefinition")
      '(280 . 0)
      '(3 . "")
      '(2 . "RAUM-ID_ALT")
      '(70 . 0)
      '(73 . 0)
      '(74 . 0)
      '(280 . 1)
      )
    ) ;ATT Raumnum.
  (entmake
    (list
      '(0 . "ATTDEF")
      '(100 . "AcDbEntity")
      '(100 . "AcDbText")
      (cons 8 "B_Raumstempel")
      '(10 0.081435 0.098051 0.0)
      '(40 . 0.15)
      '(7 . "Klinikum1")
      '(1 . "")
      '(100 . "AcDbAttributeDefinition")
      '(280 . 0)
      '(3 . "")
      '(2 . "Fläche")
      '(70 . 0)
      '(73 . 0)
      '(74 . 0)
      '(280 . 1)
      )
    ) ;ATT Fläche
  (entmake
    (list
      '(0 . "Text")
      '(10 0.89061 0.098051 0.0)
      (cons 8 "B_Raumstempel")
      '(1 . "m²/NGF")
      '(7 . "Klinikum1")
      '(40 . 0.15)
      )
    ) ;ATT m2
  (entmake
    (list
      (cons 0 "ENDBLK")
      (cons 8 "B_Raumstempel")
      )
    )
  )

;;;**************************************************************************
;;;**************************************************************************
;;;**************************************************************************
(defun ErrorGo (var / x y)
  (setq uservar    (mapcar '(lambda (x)
      (list (car x) (getvar (car x)))
      )
   var
   )
*oldError* *error*
*Error*    ErrorFun
)
  (mapcar '(lambda (y)
     (setvar (car y)
     (car (cdr y))
     )
     )
  var
  )
  (command-s "_Undo" "_Mark")
  )
;;;**************************************************************************
(defun ErrorFun (msg / x)
  (if msg
    (print msg)
    )
  (command-s "_undo" "_end")
  (command-s "_undo" "_Back")
  (mapcar '(lambda (x)
     (setvar (car x) (car (cdr x)))
     )
  uservar
  )
  (setq uservar    nil
*Error*    *olderror*
*olderror* nil
var    nil
)
  )
;;;**************************************************************************
(defun errorEnd (/ x)
  (command-s "_Undo" "_end")
  (mapcar '(lambda (x)
     (setvar (car x) (car (cdr x)))
     )
  uservar
  )
  (setq uservar nil
*error* nil
)
  )
;;;**************************************************************************
;;;**************************************************************************
;;;**************************************************************************


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: 02. Dez. 2021 10: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 WolfTempler 10 Unities + Antwort hilfreich

Hallo, jetzt im Lisp-Brett, viiiel besser 

Schritt1
Schau dir deinen zusammengebastelten String noch mal genauer an,
erstelle also ein Schriftfeld per Dialog, dann ergänze um die notwendigen "\"
und vergleiche mit deiner jetzigen Version (oder nimm einfach die neu erarbeitete Version).


Wenn du nun diesen Fehler korrigiert hast, dann siehst du noch immer nur den Code als Textwert,
doppelklickst du den Text an, dann wird erstellt ACAD ein Schriftfeld.
Nicht schön, aber schon ein Schritt weiter und mit richtigem SchriftfeldCode.


Schritt2
Das Schriftfeld auf diese Art (entmake des Textobjekte und FieldCode als Textwert) zu generieren wird nicht funktionieren,
es ist und bleibt einfach nur der dumme Textwert in einem Textobjekt, mehr nicht.

Schnellste Lösung: Nutze setpropertyvalue oder activeX/vla-put-TextString zum (nachträglich) einsetzen des Codes,
dann erstellt AutoCAD automatisch ein Schriftfeld daraus.

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: 02. Dez. 2021 10: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 WolfTempler 10 Unities + Antwort hilfreich

"Schau dir deinen zusammengebastelten String noch mal genauer an,"

Ergänzung: Auch Leerzeichen sind Zeichen, auch diese wollen ernst genommen werden 

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

WolfTempler
Mitglied
Bauzeichner

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

Beiträge: 3
Registriert: 02.12.2021

AutoCAD 2019

erstellt am: 02. Dez. 2021 10: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

Hallo Cadffm,
Zitat:
Hallo, jetzt im Lisp-Brett, viiiel besser 

ach verdammt es ist aufgefallen   

Zitat:
Schritt1

Upps sorry hatte gestern mehrfach dran rumgeschraubt gehabt und vergessen den nochmal zu reseten.

Zitat:
Schritt2

Ja da war der Hund begraben   
Mir war nicht bewusst das Entmake den FieldCode nicht richtig Verarbeiten kann.
Hab jetz ein Workaround mit Command gemacht, Werde aber mich mal mit setpropertyvalue und activeX richtig auseinander setzen.

Vielen dank cadffm   

[Diese Nachricht wurde von WolfTempler am 02. Dez. 2021 editiert.]

[Diese Nachricht wurde von WolfTempler am 02. Dez. 2021 editiert.]

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