求高手帮忙编个小程序将CASS中高程点批量取位至整米
求高手帮忙编个小程序将CASS中高程点取位至整米如将89.0 变成89小数点后舍掉
多谢了!1
fix函数应该可以吧 (atoi (rtos xx 2 0))也可以 这个可能是太简单了,没人愿意回答吧 bmy07 发表于 2011-11-1 13:53 static/image/common/back.gif
这个可能是太简单了,没人愿意回答吧
呵呵,我可是一窍不通的,只是现在需要这个功能,过来请各位帮个忙 (defun c:xsd()
(command ".style" "hz" "rs.shx,hztxt.shx" "" "0.8" "" "" "" "")
(setq q 0)
(setq s3 (ssget '((0 . "text"))))
(princ "请选择高程注记")
(initget "0 1 2")
(setq opt (getkword
"\n 0:0位小数 /1:一位小数/2:两位小数 "
)
)
(princ)
(if opt
(cond
((= opt "0") (setq sub 0))
((= opt "1") (setq sub 1))
((= opt "2") (setq sub 2))
)
)
(if (/= s3 nil)
(repeat (sslength s3)
(setq en (ssname s3 q))
(setq endata (entget en))
(setq en_list (assoc 1 endata))
(setq new_en_list (cons 1 (rtos (nth 3 (assoc 10 endata)) 2 sub)))
(setq endata (subst new_en_list en_list endata))
(entmod endata)
(setq q (1+ q))
)
)
(setvar "cmdecho" 0)
(command ".layer" "s" "0" "")
) 这个是根据文字的Z值 ;;;根据文字内容
(defun c:xsd()
(command ".style" "hz" "rs.shx,hztxt.shx" "" "0.8" "" "" "" "")
(setq q 0)
(setq s3 (ssget '((0 . "text"))))
(princ "请选择高程注记(根据文字内容)")
(initget "0 1 2")
(setq opt (getkword
"\n 0:0位小数 /1:一位小数/2:两位小数 "
)
)
(princ)
(if opt
(cond
((= opt "0") (setq sub 0))
((= opt "1") (setq sub 1))
((= opt "2") (setq sub 2))
)
)
(if (/= s3 nil)
(repeat (sslength s3)
(setq en (ssname s3 q))
(setq endata (entget en))
(setq en_list (assoc 1 endata))
;;; (setq new_en_list (cons 1 (rtos (nth 3 (assoc 10 endata)) 2 sub)))
(setq new_en_list (cons 1 (rtos (read (cdr(assoc 1 endata))) 2 sub)))
(setq endata (subst new_en_list en_list endata))
(entmod endata)
(setq q (1+ q))
)
)
(setvar "cmdecho" 0)
(command ".layer" "s" "0" "")
) CASS的高程点是不是一个块插入(insert),块名GC200,高程值是这个块的属性(attrib)? 针对cass7.0展高程点批量修改程序(精度修改),见以下位置:
http://ljttjl158.blog.163.com/blog/static/1139496972009421101948913/
页:
[1]
2