home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
BUG 15
/
BUGCD1998_06.ISO
/
aplic
/
felixcad
/
fcaddata.z
/
FLX_ATTE.LSP
< prev
next >
Wrap
Lisp/Scheme
|
1996-09-30
|
7KB
|
179 lines
;;; FLX_ATTE.LSP
;;; ====================================================================
;;; Provided for FelixCAD
;;; ====================================================================
;;; defun ATTVALUE in flx_main.lsp
;;; ====================================================================
(defun FLX_ATTQEDIT ( / TEDIT_INIT lang prt_list el1 el2 ep1 p1 p2 w1 w2
s1 fl e1 mod1 mod2 a_tag a_flag t_value t_angle
tmp_cmdecho)
(FLX_FUNC_INIT) ;;; Error Handler
;;; Prompt list
(setq prt_list (list
"Select attribute of part: " ;1
"Insertion point: " ; not used ;2
"No attribute selected !" ;3
"Modify Attribute Value" ;4
"No entity in drawing !"
"Alert"
"Target point: " ;6
"New angle" ;7
"Move" ; 8
"Rotate" ; 9
))
(if FLX_XLANGUAGE (FLX_XLANGUAGE "_atte" "_attqedit"))
;;; Dialog initialization
(defun TEDIT_INIT( / n)
(foreach n
'("IDOK" "IDCANCEL" "Edit1" "Static1" "Check1" "Check2")
(Dlg_TileSetFont n 2)
)
(Dlg_TileSet "Static1" a_tag)
(Dlg_TileSet "Edit1" t_value)
(Dlg_TileMode "Edit1" 2)
(Dlg_TileAction "Check1" "(setq mod1 (if (= $value \"1\") T nil))") ;;; Move
(Dlg_TileAction "Check2" "(setq mod2 (if (= $value \"1\") T nil))") ;;; Rotate
(Dlg_TileAction "Edit1" "(setq s1 (Dlg_TileGet \"Edit1\"))")
(Dlg_TileAction "IDOK" "(setq s1 (Dlg_TileGet \"Edit1\"))(Dlg_DialogDone)")
(Dlg_TileAction "IDCANCEL" "(setq s1 nil)(Dlg_DialogDone)")
)
;;; Main
(if (entlast)
(progn
(while (not ep1)
(initget 256 (strcat (nth 8 prt_list) " " (nth 9 prt_list))) ;;; "Move" "Rotate"
(setq ep1 (nentsel (nth 0 prt_list))) ;;;@Select attribute of part:
(cond
((= ep1 (nth 8 prt_list) ) (setq mod1 T ep1 nil)) ;; Move
((= ep1 (nth 9 prt_list) ) (setq mod2 T ep1 nil)) ;; Rotate
)
)
(setq f1 nil e1 (car ep1) el1 (entget e1))
(if (= (cdr (assoc 0 el1)) "ATTRIB")
(progn
(setq
t_value (cdr (assoc 1 el1)) ;;; Attribute Value
a_tag (cdr (assoc 2 el1)) ;;; Attribute Tag
a_flag (cdr (assoc 70 el1)) ;;; Attribute Flag
t_angle (angtos (cdr (assoc 50 el1)) 0 -1)
)
(if (or mod1 mod2)
(setq s1 nil)
(progn
(setq mod1 nil mod2 nil)
(if (FLX_DLGDSP "flx_dlg" "ATTQEDIT" "(princ)" "(TEDIT_INIT)") (princ) (exit))
)
)
(if S1 (progn
(setq el2 (subst (cons 1 s1) (assoc 1 el1) el1))
(if el2 (progn
(entmod el2)
(entupd (setq e2 (car (last ep1))))
(redraw e2 1)
))
))
(if MOD1 (progn
(setq f1 nil e1 (car ep1) el1 (entget e1))
(setq p1 (cdr (assoc 10 el1)))
(setq p2 (getpoint p1 (nth 6 prt_list)))
(if (not p2) (setq p2 p1))
(setq el2 (subst (cons 10 p2) (assoc 10 el1) el1))
(if el2 (progn
(entmod el2)
(entupd (setq e2 (car (last ep1))))
(redraw e2 1)
))
))
(if MOD2 (progn
(setq f1 nil e1 (car ep1) el1 (entget e1))
(setq p1 (cdr (assoc 10 el1)) w1 (cdr (assoc 50 el1)))
(setq w2 (getangle p1 (strcat (nth 7 prt_list) " <" (angtos w1 0 -1) ">: ")))
(if (not w2) (setq w2 w1))
(setq el2 (subst (cons 50 w2) (assoc 50 el1) el1))
(if el2 (progn
(entmod el2)
(entupd (setq e2 (car (last ep1))))
(redraw e2 1)
))
))
)
(alert
(nth 2 prt_list) ;;;@No attribute selected !
(nth 3 prt_list) ;;;@Modify Attribute Value
"EXCLAMATION"
)
) ;;; if attrib
)
(alert
(nth 4 prt_list) ;;;@No entity in drawing !
(nth 5 prt_list) ;;;@Alert
"EXCLAMATION"
)
) ;; if entlast
(FLX_FUNC_EXIT) (setq *error* nil)
(princ)
)
;;; Move attribute
(defun FLX_ATTMOVE ( / prt_list ep1 p1 e1 el1 p2 el2 e2)
(defun *error* (msg) (setq *error* nil) (princ))
(setq prt_list (list
"Select attribute of part: "
"Target point: "
))
(if FLX_XLANGUAGE (FLX_XLANGUAGE "_atte" "_attmove"))
(setq ep1 (nentsel (nth 0 prt_list))) ;;;@Select attribute of part:
(setq p1 (cdr ep1) e1 (car ep1) el1 (entget e1))
(if (= (cdr (assoc 0 el1)) "ATTRIB") (progn
(setq p1 (cdr (assoc 10 el1)))
(setq p2 (getpoint p1 (nth 1 prt_list))) ;;;@Target point:
(if (not p2) (setq p2 p1))
(setq el2 (subst (cons 10 p2) (assoc 10 el1) el1))
(entmod el2)
(entupd (setq e2 (car (last ep1))))
(redraw e2 1)
))
(setq *error* nil)
(princ)
)
;;; Rotate attribute
(defun FLX_ATTROT( / ep1 p1 e1 el1 p2 el2 e2 w1 w2)
(defun *error* (msg) (setq *error* nil) (princ))
(setq prt_list (list
"Select attribute of part: "
"New angle <"
))
(if FLX_XLANGUAGE (FLX_XLANGUAGE "_atte" "_attrot"))
(setq ep1 (nentsel (nth 0 prt_list))) ;;;@Select attribute of part:
(setq p1 (cdr ep1) e1 (car ep1) el1 (entget e1))
(if (= (cdr (assoc 0 el1)) "ATTRIB") (progn
(setq p1 (cdr (assoc 10 el1)) w1 (cdr (assoc 50 el1)))
(setq w2 (getangle p1 (strcat
(nth 1 prt_list) ;;;@New angle <
(angtos w1 0 -1)
">: "
)))
(if (not w2) (setq w2 w1))
(setq el2 (subst (cons 50 w2) (assoc 50 el1) el1))
(entmod el2)
(entupd (setq e2 (car (last ep1))))
(redraw e2 1)
))
(setq *error* nil)
(princ)
)
(princ)