找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 656|回复: 2

[求助] [求助]:请高手帮助修改这个程序

[复制链接]
发表于 2005-3-31 22:25:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
这是我从网上下载的[二直线的中心线]的程序,但如图所示中心线没有伸出2~4毫米,不符合国标恳求高手能改为伸出一定的量,先谢谢了!  附上程序:


(defun C:GSL (/ m os e1 en en1 p1 p2 e2 em p3 p4 ang1 ang2
L1 L2 x1 y1 x2 y2 x3 y3 x4 y4 xb yb pb pa ang3 p5
p6 p7 p8 p9 p10 L3 e3 en3 p11 ang3 pc L4 pd p5 p6 La)
(setq m:err *error* *error* *merr*)
(setvar "cmdecho" 0)
(command "UNDO" "G")
(command "UCS" "W")
(setq os (getvar "osmode"))
(setvar "osmode" 0)
(setq e1 (entsel "\n选择第一条线:"))
(if (= e1 nil)(princ) (progn
(setq en (cdr (assoc '0 (entget (car e1)) )))
(if (/= en "LINE") (princ "\n---所选图元不是直线---")
(progn
(setq en1 (cdr (assoc '-1 (entget (car e1)))))
(redraw en1 3)
(setq p1 (cdr (assoc '10 (entget (car e1)))))
(setq p2 (cdr (assoc '11 (entget (car e1)))))
(setq e2 (entsel "\n选择第二条线:"))
(if (= e2 nil)(princ) (progn
(redraw en1 4)
(setq em (cdr (assoc '0 (entget (car e2)) )))
(if (/= em "LINE") (princ "\n---所选图元不是直线---")
(progn
(setq p3 (cdr (assoc '10 (entget (car e2)))))
(setq p4 (cdr (assoc '11 (entget (car e2)))))
(setq ang1 (angle p1 p2))
(setq ang2 (angle p3 p4))
(setq L1 (distance p1 p2))
(setq L2 (distance p3 p4))
(setq x1 (car p1))(setq y1 (cadr p1))
(setq x2 (car p2))(setq y2 (cadr p2))
(setq x3 (car p3))(setq y3 (cadr p3))
(setq x4 (car p4))(setq y4 (cadr p4))
(setq xb (/ (+ x1 x2 x3 x4) 4.0))
(setq yb (/ (+ y1 y2 y3 y4) 4.0))
(setq pb (list xb yb))
(setq pa (inters p1 p2 p3 p4 nil))
(if (= pa nil)(progn
(setq ang3 (angle p1 p2))
(setq p5 (polar pb ang3 (/ (+ L1 L2) 4.0)))
(setq p6 (polar pb (+ pi ang3) (/ (+ L1 L2) 4.0)))
(command "LINE" p5 p6 "") )
(progn
(setq p7 (cadr e1))
(setq p8 (cadr e2))
(setq p9 (osnap p7 "nearest"))
(setq p10 (osnap p8 "nearest"))
(setq L3 (/ (distance p9 p10) 2.0))
(command "Circle" "ttr" p9 p10 L3)
(setq e3 (entlast))
(setq en3 (cdr (assoc '-1 (entget e3))))
(setq p11 (cdr (assoc '10 (entget e3))))
(setq ang3 (angle pa p11))
(entdel e3)
(setq pc (inters p1 p2 p3 p4))
(if (= pc nil)(progn
(setq L4 (distance pa pb))
(setq pd (polar pa ang3 L4))
(setq p5 (polar pd ang3 (/ (+ L1 L2) 4.0)))
(setq p6 (polar pd (+ pi ang3) (/ (+ L1 L2) 4.0)))
(command "LINE" p5 p6 "") )
(progn
(setq p5 pa)
(setq p6 (polar pa ang3 (/ (+ L1 L2) 4.0)))
(command "LINE" p5 p6 "")
)) ))
(setq La (tblsearch "LAYER" "中心线"))
(if (= La nil)
(command "-layer" "n" "中心线" "c" "4" "中心线" "lt" "中心线" "中心线" ""))
(command "chprop" "L" "" "la" "中心线" "")
)) )) )) ))
(setvar "snapang" 0)
(setvar "osmode" os)
(command "UCS" "P")
(command "UNDO" "E")(princ) )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-4-1 13:50:03 | 显示全部楼层
我粗略的看了一下,
你试一下将(command "LINE" p5 p6 "")
前面加上几句(SETQ P5 (POLAR P5 (ANGLE P6 P5) 4))
                        (SETQ P6 (POLAR P6 (ANGLE P5 P6) 4))
其中4是你需要的伸出量.
我没有看完偷懒地想了这个省事的办法,
呵呵,不过猜应该可以...注意有两处要该哦!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-1 14:55:59 | 显示全部楼层
舟自横 您好!
太谢谢您了,该程序总算完善了,您讲的"其中4是你需要的伸出量".我不懂编程,我试了一下不行,没有伸出线的量,我受了您的这句话的启发,来回调正数据,发现数据越大而中心线越短,最终调为3.8符合要求,再次感谢您帮助我们这些不会编程的人.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-28 02:33 , Processed in 0.318072 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表