Undo Funktion mit ssg-start und ssg-end verwendet. Routinen standardisiert
This commit is contained in:
@@ -181,6 +181,15 @@
|
||||
;; BLOCK-OPERATIONEN
|
||||
;; ------------------------------------------------------------
|
||||
|
||||
;; Zeitstempel als YYYYMMDDHHMMSS erzeugen (fuer eindeutige Blocknamen)
|
||||
(defun ssg-timestamp ( / cd ds ts)
|
||||
(setq cd (rtos (getvar "CDATE") 2 6))
|
||||
;; cd = "20260518.143052" -> Punkt entfernen
|
||||
(setq ds (substr cd 1 8))
|
||||
(setq ts (substr cd 10 6))
|
||||
(strcat ds ts)
|
||||
)
|
||||
|
||||
;; Eindeutigen Blocknamen aus Einfuegepunkt + Zeitstempel erzeugen
|
||||
;; pt = Einfuegepunkt (Liste); Rueckgabe: Blockname als String
|
||||
(defun ssg-make-blockname (pt / k1 k2)
|
||||
@@ -347,6 +356,69 @@
|
||||
)
|
||||
)
|
||||
|
||||
;; Attribute eines bestimmten INSERT-Entity setzen (nicht entlast).
|
||||
;; ent = Entity-Name des INSERT-Blocks
|
||||
;; attrib-alist = (("TAG" . "Wert") ...)
|
||||
(defun ssg-attrib-set-on (ent attrib-alist / obj ed typ tag wert)
|
||||
(setq obj (entnext ent))
|
||||
(while obj
|
||||
(setq ed (entget obj))
|
||||
(setq typ (cdr (assoc 0 ed)))
|
||||
(if (equal typ "SEQEND") (setq obj nil)
|
||||
(progn
|
||||
(if (equal typ "ATTRIB")
|
||||
(progn
|
||||
(setq tag (cdr (assoc 2 ed)))
|
||||
(setq wert (cdr (assoc tag attrib-alist)))
|
||||
(if (and wert (> (strlen wert) 0))
|
||||
(progn
|
||||
(entmod (subst (cons 1 wert) (assoc 1 ed) ed))
|
||||
(entupd obj)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(setq obj (entnext obj))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; Assoziationsliste in ATTDEF-Definitionsliste konvertieren.
|
||||
;; alist = (("TAG" . "Wert") ...) -> ((TAG Wert) ...)
|
||||
;; Passend fuer ssg-attrib-make-defs.
|
||||
(defun ssg-attrib-alist-to-defs (alist / result)
|
||||
(foreach pair alist
|
||||
(setq result (cons (list (car pair) (cdr pair)) result))
|
||||
)
|
||||
(reverse result)
|
||||
)
|
||||
|
||||
;; Block (.dwg) temporaer einfuegen, Attribute lesen, Block loeschen.
|
||||
;; dwg-pfad = vollstaendiger Pfad zur .dwg Datei
|
||||
;; Rueckgabe: Assoziationsliste (("TAG" . "Wert") ...) oder nil
|
||||
(defun ssg-attrib-read-dwg (dwg-pfad / tmpEnt srcAttribs oldAttreq oldAttdia)
|
||||
(if (not (findfile dwg-pfad))
|
||||
(progn
|
||||
(princ (strcat "\nFEHLER: Block nicht gefunden: " dwg-pfad))
|
||||
nil
|
||||
)
|
||||
(progn
|
||||
(setq oldAttreq (getvar "ATTREQ"))
|
||||
(setq oldAttdia (getvar "ATTDIA"))
|
||||
(setvar "ATTREQ" 0)
|
||||
(setvar "ATTDIA" 0)
|
||||
(command "_.INSERT" dwg-pfad (list 0.0 0.0 0.0) 1 1 0)
|
||||
(setvar "ATTREQ" oldAttreq)
|
||||
(setvar "ATTDIA" oldAttdia)
|
||||
(setq tmpEnt (entlast))
|
||||
(setq srcAttribs (ssg-attrib-read tmpEnt))
|
||||
(command "_.ERASE" tmpEnt "")
|
||||
srcAttribs
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; Attribut eines Blocks anhand seines Handle suchen und aendern
|
||||
;; handle = Entity-Handle (String) des INSERT
|
||||
;; tag = Attributbezeichner
|
||||
|
||||
Reference in New Issue
Block a user