wedg 发表于 2004-7-22 13:11:00

我把你的程序稍微改了一下(文字我使用的是默认的),你再看看,看看能不能再帮我完善一下


1、我的dimlfac为0.0001,标注出来的数字小数点后有3位,看看能不能改为由我们自己控制(为2位小数或4位小数或更多)。


2、我在放置文字的时候,是由交点来控制的,能不能实现当横向1:1000比例时文字离竖线的距离为1500,当横向比例为1:500的时候文字离竖线的距离为750。(现在我的文字是紧贴着竖线的)


我默认的文字为:


        style name 选$WCAD_STANDARD_TEXT;shx font       选hromans.shx


big font       选fhz.shx;height                       设为4000;width factor 设为0.7


程序如下:


(DEFUN C:BZ()


                                                                       (setq dfc (getvar "dimlfac"))                                                                       


                                                                       (setq pt1 (getpoint "\n选择点1:"))


                                                                       (setq pt2 (getpoint "\n选择点2:"))


                                                                       (setq dst1 (distance pt1 pt2))


                                                                       (setq dst1 (rtos dst1 2 2))<BR>                                                                       <BR>                                                                       (setq len (distance pt1 pt2))


                                                                       (setq pt3 (getpoint "\n选择标注线:"))


                                                                       (SETQ PT3 (LIST (CAR PT3) (1+ (CADR PT3))))<BR>                                                                       <BR>                                                                       (COMMAND "TEXT"       PT3       90 (rtos (* len dfc) 2 3) )


)

wangzhong 发表于 2004-7-22 16:41:00

修改后的缺陷

修改后的缺陷:


1、把扑捉系统变量全去掉,不能保证两点之间的真实距离。


2、小数点的位数和距直线距离由控制比例尺的全局变量设定。

wedg 发表于 2004-7-22 19:09:00

捕捉对我来说影响不是很大,现在关键我要的是离竖线的距离要能用由程序控制,不要重新调整。

f5612140 发表于 2004-7-23 11:25:00

可用系统变数或自定参数控制所要位置


(if (= kkf 1)


...

wedg 发表于 2004-7-23 19:58:00

楼上的能说得更清楚点吗?比方说插在什么地方?

xyp1964 发表于 2004-8-2 00:12:00

本帖最后由 作者 于 2004-8-2 13:40:23 编辑 <br /><br /> 问题解决了吗?



估计还是有问题。


<B>程序搞定,见下:</B>


★★★★★★★★★★★★★★★★★★★★★★★


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<BR>;;;gaocheng.lsp<BR>;;;高程标高标注;埋深标注<BR>;;;-- <A href="mailto:XYP@bsedi.com" target="_blank" >XYP@bsedi.com</A><BR>;;;2004.07.27<BR>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<BR>(prompt "\n\r                                       加载高程标高标注程序。")<BR>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<BR>;高程标高标注<BR>(defun c:gc (/ psel psel-x psel-y txt t-txt bls)<BR>       (cmdla0)<BR>       (cssz1)<BR>       <BR>       (while       (setq psel (getpoint "\n\t待标注点: "))<BR>                       (setq psel-x (car psel)<BR>               psel-y (cadr psel)<BR>               )<BR>                       (setq txt (rtos (+ (/(- psel-y pjzh-y) (/ 10000 bls)) no-jzh) 2 3))<BR>                       (setq pt-txt (list psel-x ptext-y))<BR>                       (mkla"高程标注"4);;自定义标注层名<BR>                       (setvar"osmode"0)<BR>                       (command "text" "j" "mc" (polar pt-txt pi (/ 3000 bls)) (/ 4000 bls) "90" txt)<BR>                       (setvar"osmode"39)<BR>                       )<BR>       (pxyp "GC                                       (高程)")<BR>       (cmdla1)<BR>       )<BR>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<BR>;埋深标注<BR>(defun c:msbz (/ psel psel-x psel-y txt t-txt bls)<BR>       (cmdla0)<BR>       (cssz2)<BR>       <BR>       (while<BR>                       (setq psel (getpoint "\n\t设计路面线端点: "))<BR>                       (setq psel2 (getpoint"\n\t管线底线端点:"))<BR>                       (setq psel-x (car psel)<BR>               psel-y (cadr psel)<BR>               )<BR>                       (setq txt (- (cadr psel2) (cadr psel))<BR>                                                                       txt (rtos (abs (/ txt (/ 10000 bls))) 2 3)<BR>               )<BR>                       <BR>                       ;(setq txt (rtos (+ (/(- psel-y pjzh-y) (/ 10000 bls)) no-jzh) 2 3))<BR>                       (setq pt-txt (list psel-x ptext-y))<BR>                       (mkla"埋深标注"3);;自定义标注层名<BR>                       (setvar"osmode"0)<BR>                       (command "text" "j" "mc" (polar pt-txt pi (/ 3000 bls)) (/ 4000 bls) "90" txt)<BR>                       (setvar"osmode"39)<BR>                       )<BR>       (pxyp "msbz                                       (埋深标注)")<BR>       (cmdla1)<BR>       )


;;;画新图或标不同类标高(地面高程、埋深)<BR>(defun gc0 (/)<BR>       (cmdla0)<BR>       (setq ptext-y nil);(princ ptext-y)<BR>       (setq pjzh-y nil);(princ pjzh-y)<BR>       (setq no-jzh nil);(princ no-jzh)<BR>       (setq BLS nil)<BR>       (gc)<BR>       (princ"\n\t恢复系统")<BR>       (princ)<BR>       (cmdla1)<BR>       )


;;;参数设置<BR>(defun cssz1()<BR>       (setvar"osmode"32)<BR>       (while (= bls nil)<BR>                       (if (= bls nil)<BR>                                       (progn<BR>        (initget "A B C")<BR>        (setq BL-bz (getkword "\nA(图纸比例1:100)/B(图纸比例1:200)/C(重设高程类型).&lt;1:100&gt;:"))<BR>        (setq BL-bz (if BL-bz BL-bz "A"))<BR>        (if (= bl-bz "A")(setq bls 1))<BR>        (if (= bl-bz "B")(setq bls 2))<BR>        (if (= bl-bz "C")<BR>               (progn<BR>                       (setq bls nil)<BR>                       (gc0)<BR>                       )<BR>               )<BR>        )<BR>                                       )<BR>                       )<BR>       <BR>       (if (= ptext-y nil)<BR>                       (setq ptext-y (+ (cadr (getpoint "\n\t选择标注基线端点: ")) (/ 7000 bls))));;标注文本基点y坐标<BR>       (if (= pjzh-y nil)(setq pjzh-y (CADR (dxf 10 (entget (car(entsel"\n\t选择一条基准线: ")))))));基准线y坐标<BR>       (if (= no-jzh nil)(setq no-jzh (ureal 1 "" "输入基准线标高值" no-jzh)))<BR>       )


(defun cssz2()<BR>       (setvar"osmode"32)<BR>       (while (= bls nil)<BR>                       (if (= bls nil)<BR>                                       (progn<BR>        (initget "A B C")<BR>        (setq BL-bz (getkword "\nA(图纸比例1:100)/B(图纸比例1:200)/C(重设高程类型).&lt;1:100&gt;:"))<BR>        (setq BL-bz (if BL-bz BL-bz "A"))<BR>        (if (= bl-bz "A")(setq bls 1))<BR>        (if (= bl-bz "B")(setq bls 2))<BR>        (if (= bl-bz "C")<BR>               (progn<BR>                       (setq bls nil)<BR>                       (gc0)<BR>                       )<BR>               )<BR>        )<BR>                                       )<BR>                       )<BR>       <BR>       (if (= ptext-y nil)<BR>                       (setq ptext-y (+ (cadr (getpoint "\n\t选择标注基线端点: ")) (/ 5000 bls))));;标注文本基点y坐标<BR>       ;(if (= pjzh-y nil)(setq pjzh-y (CADR (dxf 10 (entget (car(entsel"\n\t选择一条基准线: ")))))));基准线y坐标<BR>       ;(if (= no-jzh nil)(setq no-jzh (ureal 1 "" "输入基准线标高值" no-jzh)))<BR>       )


(defun ureal (bit kwd msg def / inp)<BR>       (if def<BR>                       (setq msg (strcat "\n" msg "&lt;" (rtos def 2) "&gt;: ")<BR>                                                                       bit (* 2 (fix (/ bit 2)))<BR>                       )<BR>                       (setq msg (strcat "\n" msg ": "))<BR>       )<BR>       (initget bit kwd)<BR>       (setq inp (getreal msg))<BR>       (if inp inp def)<BR>       )


;;; 保存原有系统变量,设置程序运行时的系统变量<BR>(Defun cmdla0 ()<BR>       (Setq        cmdech (Getvar "Cmdecho")<BR>        oom                       (Getvar "Orthomode")<BR>        osm                       (Getvar "Osmode")<BR>        la                               (Getvar "Clayer")<BR>       )<BR>       (Setvar "Cmdecho" 0)<BR>       (Setvar "Regenmode" 0)<BR>)


;;; 建图层: (mala "层名" 颜色号)<BR>(Defun MKLA (a b)<BR>       (If (= (Tblsearch "layer" a) nil)<BR>                       (Command "layer" "m" a "c" b a "")<BR>                       (Command "layer" "t" a "s" a "c" b a "")<BR>       )<BR>)


;;; 恢复原有系统变量<BR>(Defun cmdla1 ();(/ cmdech LA oom osm)<BR>       (Setvar "Cmdecho" cmdech)<BR>       (Setvar "Clayer" LA)<BR>       (Setvar "Orthomode" oom)<BR>       (Setvar "Osmode" osm)<BR>       (setvar "regenmode" 1)<BR>       (Terpri)<BR>       (Princ)<BR>)


;;;* 显示命令简写<BR>(DEFUN PXYP (TXT1)<BR>       (SETQ        TXT1 (STRCAT "\n\r                                       程序命令: "       TXT1 "                                       -- <A href="mailto:XYP@bsedi.com" target="_blank" >XYP@bsedi.com</A>"))<BR>       (PRINC TXT1)<BR>       (Princ)<BR>);defun


(defun dxf (code elist) (cdr (assoc code elist)))


(pxyp "GC (高程);msbz (埋深标注)")


★★★★★★★★★★★★★★★★★★★★★★★

叶文军 发表于 2004-9-1 09:17:00

为什么用DIST命令量算两点间的距离时,有时候所量算的尺寸是错的?用LIST就永远不会
页: 1 2 3 4 [5]
查看完整版本: 两点的间距