📄 dimex.lsp
字号:
(setq width (vla-get-radius vla-circle)
delta (list 0 width 0)
lead-pnt1 center
lead-pnt2 (mapcar '+ center delta)
delta (list width width 0)
lead-pnt3 (mapcar '+ lead-pnt2 delta)
ins-pnt lead-pnt3
text (RTOS width)
height (/ width 3)
width (/ width 4)
Coordinates (append lead-pnt1 lead-pnt2 lead-pnt3)
))
)
)
;;;--------------------------------------------------------------------;
;;; Function: SET-CIRCLE-PARAMS-FOR-MDIM ;
;;; ;
;;; Description: This function returns the radius of the circle ;
;;; based on the value of vla-mtext-object. ;
;;; ;
;;; Arguments: ;
;;; vla-mtext = a valid vla mtext object. ;
;;; ;
;;; Returned Value: A real number. ;
;;; ;
;;; Usage: ;
;;; (set-circle-params-for-mdim ;
;;; vla-mtext-object ;
;;; ) ;
;;;--------------------------------------------------------------------;
(defun set-circle-params-for-mdim (vla-mtext)
(if (and (= (type vla-mtext) 'VLA-OBJECT)
(vlax-read-enabled-p vla-mtext)
)
(setq rad (ATOF (vla-get-TextString vla-mtext)))
)
)
;;;--------------------------------------------------------------------;
;;; Function: UPDATE-PARAMETER-MDIM ;
;;; ;
;;; Description: This function is responsible for updating a ;
;;; vla-object's parameter. ;
;;; ;
;;; Arguments: ;
;;; vla-obj = a valid vla object. ;
;;; par-name = a parameter name. ;
;;; par-value = a new parameter value ;
;;; ;
;;; Returned Value: A vla object. ;
;;; ;
;;; Usage: ;
;;; (update-parameter-mdim ;
;;; vla-obj par-name par-value ;
;;; ) ;
;;;--------------------------------------------------------------------;
(defun update-parameter-mdim (vla-obj par-name par-value)
(if (and (= (type vla-obj) 'VLA-OBJECT)
(vlax-write-enabled-p vla-obj)
(not (equal (vlax-get vla-obj par-name) par-value))
)
(vlax-put vla-obj par-name par-value)
)
)
;;;--------------------------------------------------------------------;
;;; Function: LAST-THREE ;
;;; ;
;;; Description: This function reverses a list an retreives the ;
;;; nth 2, nth 1 and nth 0. ;
;;; ;
;;; Arguments: ;
;;; lst = a list of elements. ;
;;; ;
;;; Returned Value: A list of three elements. ;
;;; ;
;;; Usage: ;
;;; (last-three ;
;;; list-of-things ;
;;; ) ;
;;;--------------------------------------------------------------------;
(defun last-three (lst / rev-lst varlst)
(setq varlst nil)
(if (eq (type lst) 'VARIANT)
(if (> (vlax-variant-type lst) 8192)
(progn
(setq lst (vlax-safearray->list (vlax-variant-value lst)))
(setq varlst T)
)
)
)
(setq rev-lst (reverse lst))
(setq lst (list (nth 2 rev-lst)
(nth 1 rev-lst)
(nth 0 rev-lst)
))
;; Maybe Not !! (if varlst (vlax-3d-point lst))
)
;;;--------------------------------------------------------------------;
;;; Function: UPDATE-MTEXT-FOR-LEADER ;
;;; ;
;;; Description: This function updates an mtext object to place ;
;;; as a value to th eleader object. ;
;;; ;
;;; Required Functions: ;
;;; set-dim-params-for-circle ;
;;; update-parameter-mdim ;
;;; last-three ;
;;; update-parameter-mdim ;
;;; ;
;;; Arguments: ;
;;; vla-lst = a list of vla objects. Whose first element is a ;
;;; vla mtext object and the second is a vla circle ;
;;; object. ;
;;; vla-leader = a valid vla leader object. ;
;;; ;
;;; Returned Value: An updated mtext object. ;
;;; ;
;;; Usage: ;
;;; (update-mtext-for-leader ;
;;; vla-lst vla-leader ;
;;; ) ;
;;;--------------------------------------------------------------------;
(defun update-mtext-for-leader
(vla-lst vla-leader /
ins-pnt width height
text Coordinates center
vla-mtext vla-circle
)
(setq vla-mtext (car vla-lst)
vla-circle (cadr vla-lst)
)
(if (set-dim-params-for-circle vla-circle)
(progn
(if (vlax-read-enabled-p vla-leader)
(update-parameter-mdim
vla-mtext
"InsertionPoint"
(mapcar '+
(last-three (vla-get-Coordinates vla-leader))
(list 0 height 0)
)
)
)
(update-parameter-mdim vla-mtext "width" width)
(update-parameter-mdim vla-mtext "height" height)
(update-parameter-mdim vla-mtext "TextString" text)
)
)
)
;;;--------------------------------------------------------------------;
;;; Function: UPDATE-LEADER-FOR-CIRCLE ;
;;; ;
;;; Description: This function updates the "coordinate" property ;
;;; for the leader object. ;
;;; ;
;;; Arguments: ;
;;; vla-leader = a valid vla leader object. ;
;;; vla-circle = a valid vla circle object. ;
;;; ;
;;; Returned Value: An updated leader object. ;
;;; ;
;;; Usage: ;
;;; (update-leader-for-circle ;
;;; vla-leader vla-circle ;
;;; ) ;
;;;--------------------------------------------------------------------;
(defun update-leader-for-circle
(vla-leader vla-circle /
ins-pnt width height
text Coordinates center
)
(if (set-dim-params-for-circle vla-circle)
(update-parameter-mdim vla-leader "Coordinates" Coordinates)
)
)
;;;--------------------------------------------------------------------;
;;; Function: UPDATE-CIRCLE-FOR-RDIM ;
;;; ;
;;; Description: This function updates the "radius" property ;
;;; for a circle. ;
;;; ;
;;; Required Functions: ;
;;; set-circle-params-for-mdim ;
;;; update-parameter-mdim ;
;;; ;
;;; ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -