通信人家园
标题:
按比例画杆路(原创)(新兵求下载权限)
[查看完整版帖子]
[打印本页]
时间:
2012-11-9 11:52
作者:
wxmys
标题:
按比例画杆路(原创)(新兵求下载权限)
;按比例画杆路
(defun c:hgl(/ lx ls zg oce bl p1 ghqz gh r osm a1 len p2 p11 p22 p3 a2 p4 p5 ghstring)
(setq lx 2.25 ;设定直线下面的字偏离直线的距离为lx
ls 2.25 ;设定直线上面的字偏离直线的距离为ls
zg 1.5) ;设定字高zg
(command "-style" "Standard" "" 0 "" "" "" "" "") ;切换到默认的字体
(graphscr) ;切换到图形窗口
(setq oce (getvar "cmdecho")) ;储存旧的指令响应值
(setvar "cmdecho" 0) ;关闭指令响应
(setq bl 8000 ;(getint "\n请输入比例尺[1:X]内的X值<推荐4000>:")
p1 (getpoint "\n杆路的起点:") ;取得基准点p1
ghqz (getstring "\n杆号前缀<不包括常用的字母“P”,可不输入>:")
gh (getint "\n杆号<单纯一个整数>:") ;取得杆号标注
r 1 ;电杆半径
)
(setq osm (getvar "osmode")) ;储存对象捕捉的系统变量
(setvar "osmode" 0) ;关闭对象捕捉
;;;;;;;;开始外循环
(while (setq a1 (getangle p1 "\n杆路的方向<右键退出/Esc退出>:")) ;取得杆路的方向
;;;;;;;;开始内循环
(while (setq len (getdist "\n请输入杆距<米>:")) ;取得杆距
(setq
p2 (polar p1 a1 (/ (* len 1000) bl)) ;计算p2的坐标
p11 (polar P1 a1 r)
p22 (polar p1 a1 (- (/ (* len 1000) bl) r))
p3 (list (/ (+ (car p1) (car p2)) 2.0) (/ (+ (cadr p1) (cadr p2)) 2.0)) ;计算p1p2的中点p3的坐标
)
(command ".line" p11 p22 "") ;画直线
;(command ".point" p2) ;画点标记
(command ".circle" p2 r) ;画圆形
(if (and (> a1 (* pi 0.5))(< a1 (* pi 1.5)))
(setq a2 (angle p2 p1))
(setq a2 a1)
)
(setq
p4 (polar p2 (+ a2 (/ pi 2)) ls) ;计算直线上面的文字位置 杆号
p5 (polar p3 (- a2 (/ pi 2)) lx) ;计算直线下面的文字位置
ghstring (strcat ghqz "P" (itoa gh))
)
(if (= (rem gh 3) 0)
(command ".text" "m" p4 zg (/ (* a2 180) pi) ghstring) ;以中央对齐的方式写直线上面的字 杆号
)
(command ".text" "m" p5 zg (/ (* a2 180) pi) (rtos len 2 1)) ;以中央对齐的方式写直线下面的字:米
(command ".-pan" p2 p1) ;平移窗口
(setq p1 p2) ;开始重复
(setq gh (+ 1 gh)) ;杆号自加1
) ;内循环体结束
) ;外循环体结束
(setvar "osmode" osm) ;恢复对象捕捉
(setvar "cmdecho" oce) ;恢复旧的指令响应值
(princ)
) ;c:hgl函数结束
时间:
2014-11-25 14:35
作者:
jiao蛟
怎么用?
时间:
2018-5-25 11:09
作者:
向你学习
怎么用呢
通信人家园 (https://www.txrjy.com/)
Powered by C114