找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 735|回复: 3

[求助]:请求帮助!!

[复制链接]

已领礼包: 2357个

财富等级: 金玉满堂

发表于 2005-6-28 11:17:05 | 显示全部楼层 |阅读模式

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

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

×
我在网上下载了一段lisp,经过修改想实现自己需要的供能,可是在编辑过程中有三个问题不能实现:
1、选择的圆中不能实现输入半径再选择,其中:
(setq ss (getreal "输入半径:<1.0>"))
(if (= ss nil) (setq ss 1.0))
  (setq p (ssget '((0 . "circle") (-4 . "=") (40 . ss))))
提示“错误: ssget 列表值错误”,不能解决。
2、此程序只能打断与选择圆相交的线,不能删除圆内实体,希望高手解决。
3、我希望程序在处理过程中不要把处理过程表现出来。
以下是代码:

(terpri)
   (prompt "清理〖圆〗内部线,一窗口搞定,启动命令clear")

(defun c:clear
       ( / p q l m n b center0 radius0 lll pt3 oldosmode ss)
  (COMMAND "UNDO" "be")
  (setq oldosmode (getvar "osmode"))
  (setvar "osmode" 0)
;;;  (setq ss (getreal "输入半径:<1.0>"))
;;;  (if (= ss nil) (setq ss 1.0))
;;;  (prin1 ss)
;;;  
  (prompt "默认圆半径为1.0")
  (setq p (ssget '((0 . "circle") (-4 . "=") (40 . 1.0))));;想用ss代替1.0没有成功
  (setq    l 0
    m 0
    n (sslength p)
  )
  (while (< l n)
    (setq q (ssname p l))
    (setq b (cdr (assoc 0 (entget q))))
    (if    (or (= "ARC" b) (= "CIRCLE" b))
      (progn
    (setq center0 (cdr (assoc 10 (entget q)))
          radius0 (cdr (assoc 40 (entget q)))
          LLL     0.0
    )
   
    (command "_.trim" q "" "f")
  
    (WHILE (< LLL 6.5)
      (SETQ PT3 (POLAR center0 lll (* radius0 0.9)))
      (command pt3)
      (SETQ LLL (+ 0.2 LLL))
    )
   
    (command "" "")
      )
    )
    (setq l (+ 1 l))
  )
  (setvar "osmode" oldosmode)
  (COMMAND "UNDO" "e")
;;;  (command "zoom" "e" )
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-6-28 14:13:10 | 显示全部楼层
  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][url]http://www.xdcad.net/forum/attachment.php?s=&postid=1606661[/url]|;

  12. ;;;圆内物体剪切删除
  13. (defun c:test ()
  14.   (CMDLA0)
  15.   (setvar "osmode" 0)
  16.   (setq        no1 (UREAL 7 "" "\n输入半径" no1)
  17.         SS  (ssget (list '(0 . "CIRCLE") '(-4 . "<") (cons 40 no1)))
  18.         i   -1
  19.   )
  20.   (while (setq S1 (ssname SS (setq i (1+ i))))
  21.     (setq pt  (dxf 10 (entget S1))
  22.           rad (dxf 40 (entget S1))
  23.           l   0.0
  24.     )
  25.     (command "_.trim" S1 "" "f")
  26.     (WHILE (<= l (* pi 2.0))
  27.       (setq pt0 (POLAR pt l (* rad 0.99)))
  28.       (command pt0)
  29.       (setq l (+ 0.1 l))
  30.     )
  31.     (command "" "")
  32.     (setq l 0.0)
  33.     (command "erase" "wp")
  34.     (WHILE (<= l (* pi 2.0))
  35.       (setq pt0 (POLAR pt l (* rad 0.99)))
  36.       (command pt0)
  37.       (setq l (+ 0.1 l))
  38.     )
  39.     (command "" "")
  40.   )
  41.   (CMDLA1)
  42. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2357个

财富等级: 金玉满堂

 楼主| 发表于 2005-6-28 15:12:02 | 显示全部楼层
非常谢谢版主,你的程序能够实现我的目的(有一点瑕疵,就是半径需要修改为直径)。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-6-28 18:32:26 | 显示全部楼层
最初由 dabingrain 发布
[B]非常谢谢版主,你的程序能够实现我的目的(有一点瑕疵,就是半径需要修改为直径)。 [/B]


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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-22 06:12 , Processed in 0.276823 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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