CADsite

  • ma 06 04 2020, 22:54:22
  • Welkom, gast
Log in of registreer jezelf.

Login met gebruikersnaam, wachtwoord en sessielengte
Geavanceerd zoeken  

Nieuws:

Pagina's: [1]   Omlaag

Auteur Topic: attribute tag met rechte haken wijzigen in LISP  (gelezen 711 keer)

gery

  • vaste forumklant
  • *****
  • Offline Offline
  • Berichten: 486
    • Bekijk profiel
attribute tag met rechte haken wijzigen in LISP
« Gepost op: ma 16 03 2020, 13:21:40 »

Ik heb volgende LISP-code om de tag van een attribuut in block editor te wijzigen:

(setq   #ss         (ssget "x" '((-4 . "<or") (2 . "current_attribute_tag") (-4 . "or>"))))
(setq   #EntName    (ssname #ss 0))
(setq   #OldEntData (entget #EntName))
(setq   #OldTag     (assoc 2 #OldEntData))
(setq   #NewTag     (cons 2 "new_attribute_tag"))
(setq   #NewEntData (subst #NewTag #OldTag #OldEntData))
(entmod #NewEntData)

Dat werkt prima wanneer er geen rechte haken in de huidige attribuut tag staan. Staan er rechte haken in de attribuut tag, dan geeft de ssget functie "nil" als return.
Heeft iemand daar een oplossing voor?
Gelogd
AutoCAD 2017 - Windows 10

EddyBeerke

  • forumverslaafde
  • ******
  • Offline Offline
  • Berichten: 2384
  • 1d CADSITE.be niet bezoeken = 1 dag niet geleefd!
    • Bekijk profiel
    • Mijn site
Re: attribute tag met rechte haken wijzigen in LISP
« Reactie #1 Gepost op: ma 16 03 2020, 14:22:46 »

Bedoel je deze: "[" of "]"
Gelogd

gery

  • vaste forumklant
  • *****
  • Offline Offline
  • Berichten: 486
    • Bekijk profiel
Re: attribute tag met rechte haken wijzigen in LISP
« Reactie #2 Gepost op: ma 16 03 2020, 14:24:15 »

Gelogd
AutoCAD 2017 - Windows 10

EddyBeerke

  • forumverslaafde
  • ******
  • Offline Offline
  • Berichten: 2384
  • 1d CADSITE.be niet bezoeken = 1 dag niet geleefd!
    • Bekijk profiel
    • Mijn site
Re: attribute tag met rechte haken wijzigen in LISP
« Reactie #3 Gepost op: ma 16 03 2020, 16:45:15 »

Bedoel je deze: "[" of "]"
Beide.

In de lisp van Joop F. Moelee (Babe.lsp op deze site te vinden) zit een interesant stukje code hiervoor:
;;;*=====================================================================
;;; Changes the Windows backslash into a forward slash =
;;; for processing by AutoCAD =
;;;*=====================================================================
(defun ChangeBackslash (PathToConvert /)
  (setq PathToConvert (vl-string->list PathToConvert)
PathToConvert (subst 47 92 PathToConvert)
PathToConvert (vl-list->string PathToConvert)
  ) ;_ end of setq
) ;_ end of defun

In het gedeelte "(subst 47 92 PathToConvert)" wordt een karakter voor een andere vervangen.
Misschien kun je dit toepassen?
Moet je alleen even de karakter code weten.
Zou dat werken?
Gelogd

roy_043

  • forumverslaafde
  • ******
  • Offline Offline
  • Berichten: 1447
  • BricsCAD 18
    • Bekijk profiel
    • www.b-k-g.nl
Re: attribute tag met rechte haken wijzigen in LISP
« Reactie #4 Gepost op: ma 16 03 2020, 17:03:27 »

Als het gaat om het ssget filter:
"[" en "]" hebben een speciale betekenis in wcmatch patterns.
Ze worden gebruikt voor een character set.
Als je de 'rechte' haken letterlijk wilt matchen dan moet je ze 'escapen':
(2 . "`[abc`]")
Zie:
http://help.autodesk.com/view/ACD/2018/ENU/?guid=GUID-EC257AF7-72D4-4B38-99B6-9B09952A53AD
Gelogd

gery

  • vaste forumklant
  • *****
  • Offline Offline
  • Berichten: 486
    • Bekijk profiel
Re: attribute tag met rechte haken wijzigen in LISP
« Reactie #5 Gepost op: di 17 03 2020, 08:55:36 »

Als het gaat om het ssget filter:
"[" en "]" hebben een speciale betekenis in wcmatch patterns.
Ze worden gebruikt voor een character set.
Als je de 'rechte' haken letterlijk wilt matchen dan moet je ze 'escapen':
(2 . "`[abc`]")

Dat is de oplossing, bedankt!
Gelogd
AutoCAD 2017 - Windows 10

gery

  • vaste forumklant
  • *****
  • Offline Offline
  • Berichten: 486
    • Bekijk profiel
Re: attribute tag met rechte haken wijzigen in LISP
« Reactie #6 Gepost op: di 17 03 2020, 08:58:17 »

;;;*=====================================================================
;;; Changes the Windows backslash into a forward slash =
;;; for processing by AutoCAD =
;;;*=====================================================================
(defun ChangeBackslash (PathToConvert /)
  (setq PathToConvert (vl-string->list PathToConvert)
PathToConvert (subst 47 92 PathToConvert)
PathToConvert (vl-list->string PathToConvert)
  ) ;_ end of setq
) ;_ end of defun

Deze code kan ik gebruiken in een andere toepassing, bedankt!
Gelogd
AutoCAD 2017 - Windows 10
Pagina's: [1]   Omhoog