明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3358|回复: 15

直线交点上画圆 高手指点

  [复制链接]
发表于 2011-11-19 16:40:23 | 显示全部楼层 |阅读模式
本帖最后由 xingyun300 于 2011-11-20 12:34 编辑

(defun c:cc() (setq ss (ssget '((0 ."line")))) (setq pt_list nil) (setq i 0) (repeat (sslength ss) (sub_test1 (ssname ss i)) (setq i (1+ i)) ) (foreach pt pt_list(command"circle"pt 10)) (alert (strcat"共有<"(itoa (length pt_list))">交点在画面上!")) (prin1) ) (defun sub_test1(#en) (setq endata(entget #en)) (setq pt10(cdr (assoc 10 endata))) (setq pt11(cdr (assoc 11 endata))) (setq ssint(ssget"f"(list pt10 pt11))) (setq ssint(ssdel #en ssint)) (if (>(sslength ssint) 0) (progn (setq j 0) (repeat (sslength ssint) (setq ena (ssname ssint j)) (if (ssmemb ena ss) (progn (setq pta (cdr (assoc 10 (entget ena)))) (setq ptb (cdr (assoc 11 (entget ena)))) (setq intpt(inters pt10 pt11 pta ptb)) (setq intpt1(osnap intpt"int")) (if (not (member intpt1 pt_list)) (setq pt_list(cons intpt1 pt_list))) ) ) (setq j (1+ j)) ) ) ) )

想请教一下,现在这个插件只能在交点处画直径为20的圆,能不能加个对话框,像CAD画圆一样能选直径和半径,并能输入大小呢?
 楼主| 发表于 2011-11-19 16:41:33 | 显示全部楼层
我运行时总出问题,请高手指点一下看哪的问题,帮忙改改呗!!!!
发表于 2011-11-19 17:29:42 | 显示全部楼层
浅测 OK
请上传配合调试用的图纸(*.dwg)
 楼主| 发表于 2011-11-19 17:48:14 | 显示全部楼层
本帖最后由 xingyun300 于 2011-11-19 18:00 编辑

框选就有问题

CAD显示如下(((命令: cc
选择对象: 指定对角点: 找到 5 个
选择对象:  ; 错误: 参数类型错误: 二维/三维点: nil
命令:)))

命令: cc
选择对象: 指定对角点: 找到 5 个
选择对象:  ; 错误: 参数类型错误: lselsetp nil
; 错误: 函数被取消

就出现这两个问题!

本帖子中包含更多资源

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

x
 楼主| 发表于 2011-11-19 17:51:47 | 显示全部楼层
最新发现,当第一次运行时,交点画圆是正常的,当把圆删除后就不能再框选画圆了!!!

怎么回事,请指点!!!
 楼主| 发表于 2011-11-19 17:59:45 | 显示全部楼层
本帖最后由 xingyun300 于 2011-11-19 18:02 编辑

大家帮忙看看呀
发表于 2011-11-19 20:08:45 | 显示全部楼层
(progn
                  (setq pta (cdr (assoc 10 (entget ena))))
                  (setq ptb (cdr (assoc 11 (entget ena))))
                  (setq intpt(inters pt10 pt11 pta ptb))
                  (setq intpt1(osnap intpt "int"))
                  (if (not (member intpt1 pt_list)) (setq pt_list(cons intpt1 pt_list)))
               )
===>
               (progn
                  (setq pta (cdr (assoc 10 (entget ena))))
                  (setq ptb (cdr (assoc 11 (entget ena))))
                  ;; (setq intpt1(osnap intpt "int"))
                  (if (and
                        (setq intpt(inters pt10 pt11 pta ptb T))
                        (not (member intpt pt_list))
                      )   
                   (setq pt_list(cons intpt pt_list))
                 )
               )
发表于 2011-11-19 20:27:15 | 显示全部楼层
加个判断即可!
(if intpt(setq intpt1(osnap intpt "int")))
 楼主| 发表于 2011-11-19 21:55:20 来自手机 | 显示全部楼层
Andyhon 发表于 2011-11-19 20:08  (progn  (setq pta (cdr (assoc 10 (entget ena))))  (setq ptb (cdr ...

什么意思,不懂呀!
 楼主| 发表于 2011-11-19 21:59:32 来自手机 | 显示全部楼层
yjr111 发表于 2011-11-19 20:27  加个判断即可!  (if intpt(setq intpt1(osnap intpt"int")))

在哪加呀!我一点也不懂呀!要不你帮我加一下吧!谢谢了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-23 12:17 , Processed in 0.207185 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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