找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 675|回复: 1

[LISP程序]:请xyp1964兄弟看看里面连续标注的程序,那里出了问题!

[复制链接]
发表于 2005-10-30 23:00:48 | 显示全部楼层 |阅读模式

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

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

×
;;;File Name:dimcont.lsp

;;;by An Yuhui

;;;1-25-1996

;;;Function:Continue Dimension

;;;**********

(defun c:dimcont()

(setq spt(getpoint ″\nFirst point:″))

(setq ept(getpoint spt ″\nEnd point:″))

(setq just-ang(angle spt ept))

(setq ss(ssget ″F″(list spt ept)))

(setq index 0 ptlist nil)

(while (setq et (ssname ss index))

(if(=(cdr (assoc 0 (entget et))) ″POLYLINE″)

(progn

(command ″EXPLODE″et)

(setq et(entlast))

)

)

(setq etlist (entget et))

(setq pt1(getvalue 10 etlist))

(setq pt2(getvalue 11 etlist))

(setq ptlist(cons (inters pt1 pt2 spt ept nil)ptlist))

(setq index(1+index))

)

(setq ptlist(sort1 ptlist))

(setq lastpt(car ptlist))

(setq ptlist(cdr ptlist))

(while(setq pt (car ptlist))

(cond((or(=just-and0) (=just-ang pi))

(command ″dim1″ ″hor″ lastpt pt pt ″″)

(setq ptlist(cdr ptlist))

(setq lastpt pt)

)

((or (=just-ang (*pi 0.5)) (=just-ang(* pi 1.5)))

(command ″dim1″ ″ver″ lastpt pt pt ″″)

(setq ptlist(cdr ptlist))

(setq lastpt pt)

)

)

)

(princ)

)

以上是实现尺寸线的连续标注的程序 AutoCAD的DIM命令中有一个Continue连续标注命令,它的作用是 在标注完一个尺寸线后,在这条尺寸线的基础上对另一条开始进行标 注,其实在使用时仍要不断地键入命令,同时当标注水平的一连串线段时,很有可能高高低低的对不齐。以下的程序可以实现真正意义上的水平或垂直线段连续标注,方便易用,而且速度快!

       如何修改上面的语句,希望早日解决,谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-10-30 23:58:58 | 显示全部楼层
错误太多:引号″、(=just-ang、getvalue、(*pi 0.5)、(1+index)、……
重新修改:
  1. [FONT=courier new]
  2. (load "xyp_lib")
  3. ;|加载通用函数(可在签名栏直接下载)
  4. 如果已经下载xyp_lib并放到搜索路径下可以不再下载!
  5. 利用以下任何一种方式(首选第一种)即可加载和运行通用函数内的所有子程序:
  6. ★1·在acad.lsp中增加(load"xyp_lib")
  7. ■2·在每个程序内增加(load"xyp_lib")
  8. ■3·在command下,输入(load"xyp_lib")
  9. ■4·在菜单.mnl中增加(load"xyp_lib")
  10. ■5·将xyp_lib.vlx文件直接拽到cad屏幕
  11. [COLOR=red] ★通用函数下载地址:[/COLOR]
  12. [url]http://www.xdcad.net/forum/attachment.php?s=&postid=1606661[/url]
  13. |;

  14. ;;;连续水平或垂直标注
  15. ;;;File Name : dimcont.lsp
  16. ;;;Function : Continue Dimension
  17. (defun c:dimcont ()
  18.   (cmdla0)
  19.   (setvar "osmode" 0)
  20.   (setvar "ORTHOMODE" 1)
  21.   (setq        spt         (getpoint "\n起点 : ")
  22.         ept         (getpoint spt "\n终点 : ")
  23.         just-ang (angle spt ept)
  24.         ss         (ssget "F" (list spt ept))
  25.         index         -1
  26.         ptlist         nil
  27.   )
  28.   (if (or (= just-ang 0)
  29.           (= just-ang pi)
  30.           (= just-ang (* pi 0.5))
  31.           (= just-ang (* pi 1.5))
  32.       )
  33.     (progn
  34.       (while (setq et (ssname ss (setq index (1+ index))))
  35.         (if (or        (= (cdr (assoc 0 (entget et))) "POLYLINE")
  36.                 (= (cdr (assoc 0 (entget et))) "LWPOLYLINE")
  37.             )
  38.           (progn
  39.             (command "EXPLODE" et)
  40.             (setq et (entlast))
  41.           )
  42.         )
  43.         (setq etlist (entget et)
  44.               pt1    (cdr (assoc 10 etlist))
  45.               pt2    (cdr (assoc 11 etlist))
  46.               ptlist (cons (inters pt1 pt2 spt ept nil) ptlist)
  47.         )
  48.       )
  49.       (setq lastpt (car ptlist)
  50.             ptlist (cdr ptlist)
  51.       )
  52.       (mkla "尺寸标注" 3)
  53.       (while (setq pt (car ptlist))
  54.         (cond ((or (= just-ang 0) (= just-ang pi))
  55.                (command "dim1" "hor" lastpt pt pt1 "")
  56.                (setq ptlist (cdr ptlist)
  57.                      lastpt pt
  58.                )
  59.               )
  60.               ((or (= just-ang (* pi 0.5)) (= just-ang (* pi 1.5)))
  61.                (command "dim1" "ver" lastpt pt pt "")
  62.                (setq ptlist (cdr ptlist)
  63.                      lastpt pt
  64.                )
  65.               )
  66.               (t (princ))
  67.         )
  68.       )
  69.     )
  70.   )
  71.   (cmdla1)
  72. )
  73. [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 17:36 , Processed in 0.185135 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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