CASS中小数点代替高程点位
今天碰到这样一个问题:把CASS的高程点写成以小数点为高程点位,小数点前后的注记要分开。如果按照笨办法打散高程一个一个移动再分别写出点前后的数字,麻烦人不说,关键是容易出错。有没有多、快、好、省的办法呢。 本帖最后由 Gu_xl 于 2012-10-26 17:05 编辑
(defun c:tt(/ MS DIMZIN SS N OBJ ATTS STR ATT HEIGHT SCA INSPT LA STR1 STR2 TXT)
(setq ms (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object))))
(setq dimzin (getvar 'dimzin))
(setvar 'dimzin 8)
(while (setq ss (ssget '((0 . "insert") (2 . "GC200"))))
(repeat (setq n (sslength ss))
(setq obj (vlax-ename->vla-object (ssname ss (setq n (1- n)))))
(setq atts (vlax-invoke obj 'GetAttributes))
(if atts
(progn
(setq str (vla-get-TextString (setq att (car atts)))
height (vla-get-Height att)
sca (vla-get-ScaleFactor att)
inspt (vlax-safearray->list (vlax-variant-value (vla-get-InsertionPoint obj)))
la (vla-get-layer obj)
)
(vla-delete (car atts))
(setq str1 (itoa (atoi str))
str2 (substr (rtos (- (atof str) (atoi str1)) 2 3) 3)
)
(if (= "" str2) (setq str2 "0"))
(setq txt (vla-addtext ms str1 (vlax-3d-point (polar inspt pi height)) height))
(vla-put-ScaleFactor txt sca)
(vla-put-layer txt la)
(vla-put-alignment txt acAlignmentBottomRight)
(vla-put-TextAlignmentPoint txt (vlax-3d-point (polar inspt pi (* 0.2 height))))
(setq txt (vla-addtext ms str2 (vlax-3d-point (polar inspt 0 height)) height))
(vla-put-ScaleFactor txt sca)
(vla-put-layer txt la)
(vla-put-alignment txt acAlignmentBottomLeft)
(vla-put-TextAlignmentPoint txt (vlax-3d-point (polar inspt 0 (* 0.2 height))))
)
)
)
)
(setvar 'dimzin dimzin)
(princ)
)
Gu_xl 发表于 2012-10-26 16:54 static/image/common/back.gif
G大侠出手果然厉害,佩服,向你学习。 偶也来学习学习 值得学习,看看,如何实现 CASS里面有这个功能,展一般水深点 这个用途是什么啊? soly2006 发表于 2012-11-10 13:35 static/image/common/back.gif
这个用途是什么啊?
别奇怪,特殊要求。 张牙舞爪 发表于 2012-11-10 09:33 static/image/common/back.gif
CASS里面有这个功能,展一般水深点
谢谢你的提醒,这样的问题我是头一回遇到,水上成图这部分我是从没看过,当时提起这个问题时确实提到是水上测量了,因为没搞过,根本不知道水深点是这样要求的,还以为是特殊要求呢。让你见笑了。顺便提一下,这个工程还没做呢。 谢谢楼主分享!
页:
[1]