xuexicad1960 发表于 2012-10-26 16:07:16

CASS中小数点代替高程点位

             今天碰到这样一个问题:把CASS的高程点写成以小数点为高程点位,小数点前后的注记要分开。
   如果按照笨办法打散高程一个一个移动再分别写出点前后的数字,麻烦人不说,关键是容易出错。有没有多、快、好、省的办法呢。

Gu_xl 发表于 2012-10-26 16:54:04

本帖最后由 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)
)

xuexicad1960 发表于 2012-10-27 14:58:47

Gu_xl 发表于 2012-10-26 16:54 static/image/common/back.gif


G大侠出手果然厉害,佩服,向你学习。

ALWAYS1987 发表于 2012-10-31 22:39:39

偶也来学习学习

tzq_111 发表于 2012-11-9 21:19:24

值得学习,看看,如何实现

张牙舞爪 发表于 2012-11-10 09:33:27

CASS里面有这个功能,展一般水深点

soly2006 发表于 2012-11-10 13:35:49

这个用途是什么啊?

xuexicad1960 发表于 2012-11-21 18:17:48

soly2006 发表于 2012-11-10 13:35 static/image/common/back.gif
这个用途是什么啊?

别奇怪,特殊要求。

xuexicad1960 发表于 2012-11-21 18:43:32

张牙舞爪 发表于 2012-11-10 09:33 static/image/common/back.gif
CASS里面有这个功能,展一般水深点

    谢谢你的提醒,这样的问题我是头一回遇到,水上成图这部分我是从没看过,当时提起这个问题时确实提到是水上测量了,因为没搞过,根本不知道水深点是这样要求的,还以为是特殊要求呢。让你见笑了。顺便提一下,这个工程还没做呢。

zhouzhiy 发表于 2017-11-11 11:57:29

谢谢楼主分享!
页: [1]
查看完整版本: CASS中小数点代替高程点位