找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 745|回复: 7

[LISP程序]:截断线自动绘制程序

[复制链接]
发表于 2003-10-23 10:55:15 | 显示全部楼层 |阅读模式

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

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

×
截断线自动绘制程序
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-10-23 10:58:15 | 显示全部楼层
提醒大家是   jdx.vlx
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-10-23 14:48:23 | 显示全部楼层 |阅读模式

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

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

×
请问截断线是指什么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-10-24 17:41:25 | 显示全部楼层
请问该程序具体起什么作用?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-10-24 17:51:53 | 显示全部楼层
一楼的朋友,你的程序很好。
下面我也上传一个,我的这个可以在14下面使用,但是只能画水平和垂直方向的折断线。

  1.   [FONT=courier new]
  2. (defun c:zdx()
  3.    (setq os (getvar "osmode"))
  4.    (setvar "cmdecho"0)
  5.    (setq plw (getvar "plinewid"))
  6.    (setvar "plinewid" 0)
  7.    (command "undo""group")
  8.   (princ"只画水平和竖直的折断线")
  9. (setq pt2 (getpoint "\nPlease click the first  point(选择断面线的第一个边缘点):"))
  10. (setq pt7 (getpoint pt2 "\nPlease click the second point(选择地面线的另一边缘点):"))
  11. (setq bl (getreal "\nPlease enter the scale(请输入比例)<10>:"))
  12. (if (null bl)
  13.   (progn
  14.      (setq bl 10)
  15.   ))
  16.   (setq bl (/ bl 10))
  17.    (setvar "osmode"0)
  18. (setq dx (- (car pt2) (car pt7)))
  19. (setq dy (- (cadr pt2) (cadr pt7)))
  20. (if (<= (abs dx) (abs dy))
  21.    (progn
  22.      (setq  pt3 (list (car pt2) (+ (- (cadr pt2) (/ dy 2.0)) (* 1.5 bl))))
  23.      (setq  pt4 (list (+ (car pt3) (* 1 bl)) (cadr pt3)))
  24.      (setq  pt5 (list (- (car pt4) (* 2 bl)) (- (cadr pt4) (* 3 bl))))
  25.      (setq  pt6 (list (+ (car pt5) (* 1 bl)) (cadr pt5)))
  26.      (setq  pt8 (list (car pt2) (cadr pt7)))
  27.    )
  28.    (progn
  29.      (setq  pt3 (list (- (car pt2) (/ dx 2.0) (* 1.5 bl)) (cadr pt2)))
  30.      (setq  pt4 (list (+ (car pt3) 0) (+ (cadr pt3) (* 1 bl))))
  31.      (setq  pt5 (list (+ (car pt4) (* 3 bl)) (- (cadr pt4) (* 2 bl))))
  32.      (setq  pt6 (list (+ (car pt5) 0) (+ (cadr pt5) (* 1 bl))))
  33.      (setq  pt8 (list (car pt7) (cadr pt2)))
  34.    )
  35. )
  36. (if (or (and (< (abs dy) (abs dx))(< dx 0)) (and (> (abs dy) (abs dx))(> dy 0)))
  37.    (progn
  38.      (command "pline" pt2 pt3 pt4 pt5 pt6 pt8 "")
  39.    )
  40.    (progn
  41.      (command "pline" pt2 pt6 pt5 pt4 pt3 pt8 "")
  42.    )
  43. )
  44. (command "undo""end")
  45. (setvar "cmdecho" 1)
  46. (setvar "plinewid" plw)
  47. (setvar"osmode"os)
  48. (princ)
  49. )
  50.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-10-24 19:39:16 | 显示全部楼层
再来看看我的截断线:

  1. (defun C:jdx(/ lay pt1 pt2 dis x1 pt3 pt4 pt5 pt6  n ss ptt scale)
  2.   (setvar "CMDECHO" 0)
  3.   (setq lay (getvar "clayer"))
  4.   (setq osan (getvar "osmode"))  
  5.   (command "color" "bylayer")
  6.   (command "layer" "m" "jdx" "c" "m" "jdx" "")
  7.   (setq scale (getreal "\n比例<100>:"))
  8.   (if (= scale nil) (setq scale 100))
  9.   (setq pt1 (getpoint "\n起始点:"))
  10.   (setq pt2 (getpoint pt1 "\n结束点:"))
  11.   (setq ang (angle pt1 pt2))
  12.   (setq dis (distance pt1 pt2))
  13.   (setq x1 (/ (- dis (* 2 scale)) 2))
  14.   (setq pt3 (polar pt1 ang x1))
  15.   (setq pt4 (polar pt1 ang (+ x1 (* 2 scale))))
  16.   (setq pt5 (polar pt3 (+ ang 1.32582) (* 2.0616 scale)))
  17.   (setq pt6 (polar pt4 (- ang 1.81577) (* 2.0616 scale)))
  18.   (setvar "osmode" 0)
  19.   (command "pline" pt1 "w" "0" "0" pt3 pt5 pt6 pt4 pt2 "")
  20.   (setq n (getstring "\n是否偏移 y <n>"))
  21.   (if (or (= n "y")(= n "Y"))
  22.       (progn
  23.         (setq ptt (polar pt1 (- ang (/ pi 2)) (* 1 scale)))
  24.         (setq ss (entlast))
  25.         (command "copy" ss "" pt1 ptt)
  26.       )
  27.   )
  28.   (command "layer" "s" lay "")
  29.   (setvar "osmode" osan)
  30.   (princ)(princ)
  31. )  
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-2-28 18:17:28 | 显示全部楼层
zhynt 斑竹的截断程序好用,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-3-2 10:00:31 | 显示全部楼层
请问斑竹,程序结尾处为什么用两个(princ)(princ)?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-29 04:03 , Processed in 0.453386 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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