明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3297|回复: 15

大哥,大姐这样的lisp该如何写,帮帮忙!!!!!!!!!!!

  [复制链接]
发表于 2006-3-30 20:15:00 | 显示全部楼层 |阅读模式
我想把这个小圆复制到每一个交点去,该如何做????在线等待中^^^^^^^^^^^^^^^^^^^^^^^^^

本帖子中包含更多资源

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

x
发表于 2006-3-30 20:56:00 | 显示全部楼层

“小圆”在哪里?

个人认为,你的问题没说白,别人怎么回答呢?

 楼主| 发表于 2006-3-30 21:38:00 | 显示全部楼层
hehe 老大没看到啊,在那个拱型上面,中线处!!!!
发表于 2006-3-30 23:33:00 | 显示全部楼层
  1. (load "xyp_lib.vlx") ;版本 V.20060314
  2. ;|下载和加载通用函数(可在签名栏直接下载后放到搜索路径下)
  3. 利用以下任何一种方式(首选第一种)即可加载和运行通用函数内的所有子程序:
  4. ★1·在acad.lsp中增加(load"xyp_lib")
  5. ■2·在每个程序内增加(load"xyp_lib")
  6. ■3·在command下,输入(load"xyp_lib")
  7. ■4·在菜单.mnl中增加(load"xyp_lib")
  8. ■5·将xyp_lib.vlx文件直接拽到cad屏幕
  9. [COLOR=red] ★通用函数下载地址:[/COLOR]
  10. [url]http://bbs.mjtd.com/forum.php?mod=viewthread&tid=37554[/url]
  11. |;
  12. (defun c:test ()
  13.   (CMDLA0)
  14.   (setq e (car (entsel "\n选择小圆: ")))
  15.   (setvar "osmode" 0)
  16.   (if (= (xyp-get-dxf 0 e) "CIRCLE")
  17.     (progn
  18.       (princ "\n选择复制范围: ")
  19.       (setq ss (ssget '((0 . "LINE")))
  20.      pt0 (xyp-get-dxf 10 e)
  21.      i -1
  22.      j 0
  23.       )
  24.       (while (setq s1 (ssname ss (setq i (1+ i))))
  25. (setq l   (xyp-get-Curvelength s1)
  26.        pt1 (xyp-get-dxf 10 s1)
  27. )
  28. (if (AND (< l 2.1) (NOT (equal pt0 pt1)))
  29.    (progn
  30.      (command "copy" e "" pt0 pt1)
  31.      (setq j (1+ j))
  32.    )
  33. )
  34.       )
  35.     )
  36.   )
  37.   (princ "\n共复制 ")
  38.   (princ j)
  39.   (princ " 个小圆")
  40.   (CMDLA1)
  41. )
发表于 2006-3-31 17:55:00 | 显示全部楼层
不好意思,将版主的程序改了一下,不用加载xyp_lib.vlx(版主的vlx库是挺好的,只是个人认为初学者还是多学一些知识比较好),请版主见谅!
  1. (defun c:test ()
  2. ;;(CMDLA0)
  3. (vl-load-com)
  4. (setq e (car (entsel "\n选择小圆: ")))
  5. (setvar "osmode" 0)
  6. ;(if (= (xyp-get-dxf 0 e) "CIRCLE")
  7. (if (= (cdr (assoc 0 (entget e))) "CIRCLE")
  8.   (progn
  9.    (princ "\n选择复制范围: ")
  10.    (setq ss  (ssget '((0 . "LINE")))
  11.       pt0 (cdr (assoc 10 (entget e)))
  12.       i   -1
  13.       j   0
  14.    )
  15.    (while (setq s1 (ssname ss (setq i (1+ i))))
  16.     (setq obj (vlax-ename->vla-object s1)
  17.     l   (vlax-curve-getDistAtPoint obj (vlax-curve-getEndPoint obj))
  18.        pt1 (cdr (assoc 10 (entget s1)))
  19.     )
  20.     (if (and (< l 2.1) (not (equal pt0 pt1)))
  21.      (progn
  22.       (command "copy" e "" pt0 pt1)
  23.       (setq j (1+ j))
  24.      )
  25.     )
  26.    ); end of while
  27.   ); end of progn
  28. ); end of if
  29. (princ "\n共复制 ")
  30. (princ j)
  31. (princ " 个小圆")
  32. ;;(CMDLA1)
  33. )
 楼主| 发表于 2006-4-1 01:12:00 | 显示全部楼层

狂谢,,斑竹和风哥!!!!!!!谢谢了,去试试

!!

 楼主| 发表于 2006-4-1 01:21:00 | 显示全部楼层

不过小弟用了一下,没有达到预期的目的,我想是我没有说明白,!!!!因为我是搞巷道工程的,要经常做很多巷道断面的炮眼布置图,所以就想做一个命令,具体为:

1、我已经做好了一个命令可以做出巷道的断面,和所有应该布置炮眼的点

2、选择一个小圆后在所有的点都能自动复制一个小圆,

小弟水平凹,呵呵请大哥们费费心了!!!!!!!

发表于 2006-4-1 07:41:00 | 显示全部楼层

怎么不能在论坛发帖子了啊?  发表帖子的时候写正文的地方是不可编辑的。  好郁闷啊。 

 楼主| 发表于 2006-4-1 09:36:00 | 显示全部楼层

今天早上又试了一下两位高人的程序,非常好使,再次感谢,,,,,崇拜啊!!!!!

 楼主| 发表于 2006-4-1 10:09:00 | 显示全部楼层
还有请教以个问题:小弟用princ输出提示的时候,总是输出两次,为什么?如何改,谢谢!!!!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-7-18 05:16 , Processed in 0.179293 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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