找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1995|回复: 18

[LISP程序]:改进的画中心线程序, 批量处理...

[复制链接]
发表于 2003-5-20 11:09:01 | 显示全部楼层 |阅读模式

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

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

×
改进的画中心线程序. 不但可以批量对圆, 且对任意位置的圆弧和椭圆画中心线, 请大家试用提出意见.

  1. (defun c:test ()
  2.   (setvar "osmode" 0)
  3.   (setq olayer (getvar "clayer"))
  4.   (mlayer "cline" "yellow" "center2")
  5.   (setq ss (ssget))
  6.   (if (< (length (ssnamex ss 0)) 2)
  7.     (setq pq (cadr (last (car (ssnamex ss 0)))))
  8.     (setq pq (cadr (nth 2 (cadr (ssnamex ss 0)))))
  9.   );i
  10.   (setq ns (sslength ss) n 0)
  11.   (while (< n ns)
  12.     (setq ent (ssname ss n))
  13.     (setq pc (dxf 10 ent))
  14.     (cond
  15.       ((= (dxf 0 ent) "ARC")
  16.         (setq rad (dxf 40 ent)
  17.                d (/ (fix (* rad 100)) 1000.0)
  18.               p1 (polar pc (dxf 50 ent)(+ rad d))
  19.               p2 (polar pc (angle p1 pc)(+ rad d))))     
  20.       ((= (dxf 0 ent) "CIRCLE")
  21.         (setq rad (dxf 40 ent)
  22.                d (/ (fix (* rad 100)) 1000.0)
  23.               p1 (polar pc 0 (+ rad d))
  24.               p2 (polar pc pi (+ rad d))))     
  25.       ((= (dxf 0 ent) "ELLIPSE")
  26.         (setq px (dxf 11 ent)
  27.               px (list (+ (car pc)(car px))(+ (cadr pc)(cadr px)) 0)
  28.              rad (distance pc px)
  29.                d (/ (fix (* rad 10)) 100.0)
  30.               p1 (polar pc (angle pc px)(+ rad d))
  31.               p2 (polar pc (angle px pc)(+ rad d))
  32.             rad1 (* (dxf 40 ent) rad)
  33.               ri (/ (+ rad1 d)(+ rad d))))
  34.     );c
  35.     (if p2 (vl-cmdf "line" p1 p2 ""))
  36.     (setq lline (entlast))
  37.     (vl-cmdf "copy" (entlast) "" pc pc "" "rotate" (entlast) "" pc 90 "")
  38.     (if (= (dxf 0 ent) "ELLIPSE")(vl-cmdf "scale" lline "" pc ri ""))
  39.     (setq n (1+ n))
  40.   );w
  41.   (setvar "clayer" olayer)
  42.   (setvar "osmode" 37)
  43.   (princ)
  44. );defun
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2004-1-21 11:16:12 | 显示全部楼层
补充:
(defun mlayer (name color ltype)
  (if (tblsearch "layer" name)
      (vl-cmdf "layer" "s" name "")
      (progn
        (setq regen (getvar "regenmode"))
        (setvar "regenmode" 0)
        (vl-cmdf "layer" "m" name)
        (if color (vl-cmdf "c" color name))
        (if ltype (vl-cmdf "lt" ltype name))
        (vl-cmdf "")
        (setvar "regenmode" regen)
      )
  )
)

(defun dxf (code ename)(cdr (assoc code (entget ename))));
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2003-5-26 11:22:21 | 显示全部楼层
你不熟悉lisp? 加载,调用按提示选择实体呀?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-5-27 08:03:03 | 显示全部楼层
我想他要告訴你有些函數未附上,如mlayer,dxf,所以不能用
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-1-21 09:51:13 | 显示全部楼层
补充完函数后再加币
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2004-3-4 06:22:16 | 显示全部楼层
最初由 cxzr8 发布
[B]期待楼主完成,非常实用的程序。 [/B]


已经补充了呀? 请试用提出意见.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-3-15 15:42:31 | 显示全部楼层
最初由 lsjjm 发布
[B]

已经补充了呀? 请试用提出意见. [/B]

用了一下觉得很实用。但是也发现不知为什么画一个中心线以后会出现两次出错提示。如下图所示。另外对于选择的实体较多时运行速度太慢。请看一下,为什么会出现错误提示。谢谢了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-3-21 15:48:36 | 显示全部楼层
呵呵. 樓主的寫程序過急了不夠細心所以有點有點美中不足,

這句 (vl-cmdf "copy" (entlast) "" pc pc "" "rotate" (entlast) "" pc 90 "")
多了兩個 ""  這個符號1 . 改里來就好了. 如下
(vl-cmdf "copy" (entlast) "" pc pc  "rotate" (entlast) "" pc 90 )


還有下面這句也是上面的問題.
(if (= (dxf 0 ent) "ELLIPSE")(vl-cmdf "scale" lline "" pc ri ""))
改為
(if (= (dxf 0 ent) "ELLIPSE")(vl-cmdf "scale" lline "" pc ri ))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-3-21 18:36:46 | 显示全部楼层
最初由 JOSDENNIS 发布
[B]呵呵. 樓主的寫程序過急了不夠細心所以有點有點美中不足,

這句 (vl-cmdf "copy" (entlast) "" pc pc "" "rotate" (entlast) "" pc 90 "")
多了兩個 ""  這個符號1 . 改里來就好了. 如下
(vl-cmdf "copy" (entl... [/B]

谢谢了,这样一改就OK了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2004-7-29 21:28:53 | 显示全部楼层
我想他要告訴你有些函數未附上,如mlayer,dxf,所以不能用
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-7-30 04:50:46 | 显示全部楼层
最初由 pppk 发布
[B]我想他要告訴你有些函數未附上,如mlayer,dxf,所以不能用 [/B]

看上面的贴子. 半年前已经解决了.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 00:22 , Processed in 0.234510 second(s), 61 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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