找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2274|回复: 12

[求助]

[复制链接]

已领礼包: 60个

财富等级: 招财进宝

发表于 2014-1-11 16:13:39 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 abc498091367 于 2015-7-12 23:18 编辑

求最大外形4个角各画4个直径2.0的圆,   2.0的圆心到最大外形的边2.0 QQ图片20140111160146.jpg

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

已领礼包: 10398个

财富等级: 富甲天下

发表于 2014-1-11 16:37:40 | 显示全部楼层
本帖最后由 zxq0220 于 2014-1-12 21:05 编辑

程序未调试
  1. ;矩形四角外画圆 晓东 zxq0220 2014.1.11
  2. (defun c:tt ()
  3. (defun box (e)
  4.   (vla-getboundingbox(vlax-ename->vla-object e)'p1 'p2)
  5.   (list (vlax-safearray->list p1) (vlax-safearray->list p2))
  6. )
  7. (if (setq ss (ssget)) (progn
  8.   (setq p1 (list -1e16 -1e16) p2 (list 1e16 1e16))
  9.   (setq i -1 plst (list))
  10.   (repeat (sslength ss)
  11.    (setq en (ssname ss (setq i (1+ i))))
  12.    (setq plst (append plst (box en)))
  13.   )
  14.   (setq xmin (apply 'min (mapcar 'car plst)))
  15.   (setq ymin (apply 'min (mapcar 'cadr plst)))
  16.   (setq xmax (apply 'max (mapcar 'car plst)))
  17.   (setq ymax (apply 'max (mapcar 'cadr plst)))
  18.   (setq p1 (mapcar '- (list xmin ymin) '(2 2)))
  19.   (setq p2 (mapcar '- (list xmax ymin) '(-2 2)))
  20.   (setq p3 (mapcar '+ (list xmin ymax) '(-2 2)))
  21.   (setq p4 (mapcar '+ (list xmax ymax) '(2 2)))
  22.   (entmake (list '(0 . "CIRCLE") (cons 10 p1) '(40 . 2)))
  23.   (entmake (list '(0 . "CIRCLE") (cons 10 p2) '(40 . 2)))
  24.   (entmake (list '(0 . "CIRCLE") (cons 10 p3) '(40 . 2)))
  25.   (entmake (list '(0 . "CIRCLE") (cons 10 p4) '(40 . 2)))
  26. ))
  27. (princ)
  28. )

点评

[attachimg]8803[/attachimg] ;;; 四个角画2.0的圆孔================================ (defun c:wz() (princ"\n画四周最大外形[4]个角2.0圆:") (defun box (e) (vla-getboundingbox (vlax-ename->vl  详情 回复 发表于 2014-7-17 19:02
zxq 运行出现这问题:选择对象: ; 错误: no function definition: ENTMAK 麻烦再帮忙改下,另外能不能改成什么形状都行,不是4边形,其他形状(比如圆)  详情 回复 发表于 2014-1-12 08:25
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-1-11 16:56:19 | 显示全部楼层
本帖最后由 st788796 于 2014-1-11 17:29 编辑

对照下 API 应用,仅对正放的形状
  1. (defun c:tt (/ ss)
  2.   (if (setq ss (ssget '((0 . "lwpolyline"))))
  3.     (mapcar '(lambda (x / box nbox)
  4.                (setq box  (XD::Pnts:Close (xdrx_entity_box x));_包围盒点封闭
  5.                      nBox (apply 'xdrx_points_offset (cons 2 box));_点集偏移,需要封闭点表
  6.                )
  7.                (mapcar '(lambda        (p)
  8.                           (xdrx_circle_make p 2.)
  9.                         )
  10.                        nBox
  11.                );_新形成的包围盒四个点画圆
  12.              )
  13.             (xdrx_pickset->ents ss);_选择集转图元列表
  14.     )
  15.   )
  16.   (princ)
  17. )

点评

ST788796[attachimg]7557[/attachimg]能不能再帮忙改下,什么形状都能画4个角2.0的圆。  详情 回复 发表于 2014-1-12 08:28
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 60个

财富等级: 招财进宝

 楼主| 发表于 2014-1-12 08:25:43 | 显示全部楼层

zxq  运行出现这问题:选择对象:                                 ; 错误: no function definition: ENTMAK
麻烦再帮忙改下,另外能不能改成什么形状都行,不是4边形,其他形状(比如圆)

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

使用道具 举报

已领礼包: 60个

财富等级: 招财进宝

 楼主| 发表于 2014-1-12 08:28:57 | 显示全部楼层
st788796 发表于 2014-1-11 16:56
对照下 API 应用,仅对正放的形状

ST788796 QQ图片20140112082811.jpg 能不能再帮忙改下,什么形状都能画4个角2.0的圆。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-1-12 09:15:21 来自手机 | 显示全部楼层
两个程序都可以画任意形状的,zxq的应为entmake,第二个程序把原ssget括号内的'((0 . "lwpolyline"))去掉即可

点评

[attachimg]8802[/attachimg] ;;; 四个角画2.0的圆孔================================ (defun c:wz() (princ"\n画四周最大外形[4]个角2.0圆:") (defun box (e) (vla-getboundingbox (vlax-ename->vla-  详情 回复 发表于 2014-7-17 14:24
多谢st788796 ,程序非常好,  详情 回复 发表于 2014-1-12 10:08
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 60个

财富等级: 招财进宝

 楼主| 发表于 2014-1-12 10:08:50 | 显示全部楼层
st788796 发表于 2014-1-12 09:15
两个程序都可以画任意形状的,zxq的应为entmake,第二个程序把原ssget括号内的'((0 . "lwpolyline"))去掉即 ...

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

使用道具 举报

已领礼包: 60个

财富等级: 招财进宝

 楼主| 发表于 2014-7-17 14:24:13 | 显示全部楼层
st788796 发表于 2014-1-12 09:15
两个程序都可以画任意形状的,zxq的应为entmake,第二个程序把原ssget括号内的'((0 . "lwpolyline"))去掉即 ...

QQ图片20140717142131.jpg
;;; 四个角画2.0的圆孔================================
(defun c:wz()
  (princ"\n画四周最大外形[4]个角2.0圆:")
  (defun box (e)
    (vla-getboundingbox (vlax-ename->vla-object e) 'p1 'p2)
    (list (vlax-safearray->list p1) (vlax-safearray->list p2)))
  (if (setq ss (ssget))
    (progn
      (setq p1 (list -1e16 -1e16)
            p2 (list 1e16 1e16))
      (setq i -1 plst (list))
      (repeat (sslength ss)
        (setq en (ssname ss (setq i (1+ i))))
        (setq plst (append plst (box en))))
      (setq xmin (apply 'min (mapcar 'car plst)))
      (setq ymin (apply 'min (mapcar 'cadr plst)))
      (setq xmax (apply 'max (mapcar 'car plst)))
      (setq ymax (apply 'max (mapcar 'cadr plst)))
      (setq p1 (mapcar '- (list xmin ymin) '(4 -4)))
      (setq p2 (mapcar '- (list xmax ymin) '(-4 -4)))
      (setq p3 (mapcar '+ (list xmin ymax) '(-4 -4)))
      (setq p4 (mapcar '+ (list xmax ymax) '(-4 4)))
      (entmake (list '(0 . "CIRCLE") (cons 10 p1) '(40 . 1)))
      (entmake (list '(0 . "CIRCLE") (cons 10 p2) '(40 . 1)))
      (entmake (list '(0 . "CIRCLE") (cons 10 p3) '(40 . 1)))
      (entmake (list '(0 . "CIRCLE") (cons 10 p4) '(40 . 1)))
    )
  )
  (princ)
)




ST请帮忙改改,现在程序可以自动放4个角,麻烦你帮忙修改成上下正中间再多加2个孔,谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 60个

财富等级: 招财进宝

 楼主| 发表于 2014-7-17 19:02:06 | 显示全部楼层

QQ20140717142131.jpg.thumb.jpg

;;; 四个角画2.0的圆孔================================
(defun c:wz()
  (princ"\n画四周最大外形[4]个角2.0圆:")
  (defun box (e)
    (vla-getboundingbox (vlax-ename->vla-object e) 'p1 'p2)
    (list (vlax-safearray->list p1) (vlax-safearray->list p2)))
  (if (setq ss (ssget))
    (progn
      (setq p1 (list -1e16 -1e16)
            p2 (list 1e16 1e16))
      (setq i -1 plst (list))
      (repeat (sslength ss)
        (setq en (ssname ss (setq i (1+ i))))
        (setq plst (append plst (box en))))
      (setq xmin (apply 'min (mapcar 'car plst)))
      (setq ymin (apply 'min (mapcar 'cadr plst)))
      (setq xmax (apply 'max (mapcar 'car plst)))
      (setq ymax (apply 'max (mapcar 'cadr plst)))
      (setq p1 (mapcar '- (list xmin ymin) '(4 -4)))
      (setq p2 (mapcar '- (list xmax ymin) '(-4 -4)))
      (setq p3 (mapcar '+ (list xmin ymax) '(-4 -4)))
      (setq p4 (mapcar '+ (list xmax ymax) '(-4 4)))
      (entmake (list '(0 . "CIRCLE") (cons 10 p1) '(40 . 1)))
      (entmake (list '(0 . "CIRCLE") (cons 10 p2) '(40 . 1)))
      (entmake (list '(0 . "CIRCLE") (cons 10 p3) '(40 . 1)))
      (entmake (list '(0 . "CIRCLE") (cons 10 p4) '(40 . 1)))
    )
  )
  (princ)
)

zxq请帮忙改改,现在程序可以自动放4个角,麻烦你帮忙修改成上下正中间再多加2个孔,谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 10398个

财富等级: 富甲天下

发表于 2014-7-17 19:44:21 | 显示全部楼层
  1. ;矩形四角外画圆 晓东 zxq0220 2014.1.11 2014.7.17
  2. (defun c:tt ()
  3. (defun box (e)
  4.   (vla-getboundingbox(vlax-ename->vla-object e)'p1 'p2)
  5.   (list (vlax-safearray->list p1) (vlax-safearray->list p2))
  6. )
  7. (defun mkcir (p r)
  8.   (entmake (list '(0 . "CIRCLE") (cons 10 p) (cons 40 r)))
  9. )
  10. (if (setq ss (ssget)) (progn
  11.   (setq i -1 plst (list))
  12.   (repeat (sslength ss)
  13.    (setq en (ssname ss (setq i (1+ i))))
  14.    (setq plst (append plst (box en)))
  15.   )
  16.   (setq xmin (apply 'min (mapcar 'car plst)))
  17.   (setq ymin (apply 'min (mapcar 'cadr plst)))
  18.   (setq xmax (apply 'max (mapcar 'car plst)))
  19.   (setq ymax (apply 'max (mapcar 'cadr plst)))
  20.   (setq p1 (mapcar '- (list xmin ymin) '(2 2)))
  21.   (setq p2 (mapcar '- (list xmax ymin) '(-2 2)))
  22.   (setq p3 (mapcar '+ (list xmin ymax) '(-2 2)))
  23.   (setq p4 (mapcar '+ (list xmax ymax) '(2 2)))
  24. (mkcir p1 2)
  25. (mkcir p2 2)
  26. (mkcir p3 2)
  27. (mkcir p4 2)
  28. (mkcir (mapcar '(lambda (a b) (/ (+ a b) 2)) p1 p2) 2)
  29. (mkcir (mapcar '(lambda (a b) (/ (+ a b) 2)) p3 p4) 2)
  30. ))
  31. (princ)
  32. )

点评

[attachimg]11377[/attachimg] 还得请ZXQ0220帮忙再加4个圆,注:上面2个是根据中心距离,谢谢!  详情 回复 发表于 2014-11-17 14:39
谢,明天去测试,  详情 回复 发表于 2014-7-17 20:35
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 60个

财富等级: 招财进宝

 楼主| 发表于 2014-7-17 20:35:37 | 显示全部楼层

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

使用道具 举报

已领礼包: 60个

财富等级: 招财进宝

 楼主| 发表于 2014-11-17 14:39:57 | 显示全部楼层

QQ图片20141117143840.png
还得请ZXQ0220帮忙再加4个圆,注:上面2个是根据中心距离,谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 60个

财富等级: 招财进宝

 楼主| 发表于 2014-11-17 14:40:46 | 显示全部楼层
  1. ;-----------进威要求外形点----------
  2. (defun c:ww()
  3. (defun box (e)
  4. (command "layer" "s" "1" "")
  5.   (vla-getboundingbox(vlax-ename->vla-object e)'p1 'p2)
  6.   (list (vlax-safearray->list p1) (vlax-safearray->list p2))
  7. )
  8. (defun mkcir (p r)
  9.   (entmake (list '(0 . "CIRCLE") (cons 10 p) (cons 40 r)))
  10. )
  11. (if (setq ss (ssget)) (progn
  12.   (setq i -1 plst (list))
  13.   (repeat (sslength ss)
  14.    (setq en (ssname ss (setq i (1+ i))))
  15.    (setq plst (append plst (box en)))
  16.   )
  17.   (setq xmin (apply 'min (mapcar 'car plst)))
  18.   (setq ymin (apply 'min (mapcar 'cadr plst)))
  19.   (setq xmax (apply 'max (mapcar 'car plst)))
  20.   (setq ymax (apply 'max (mapcar 'cadr plst)))
  21.   (setq p1 (mapcar '- (list xmin ymin) '(4 -4)))
  22.   (setq p2 (mapcar '- (list xmax ymin) '(-4 -4)))
  23.   (setq p3 (mapcar '+ (list xmin ymax) '(-4 -4)))
  24.   (setq p4 (mapcar '+ (list xmax ymax) '(4 -4)))
  25. (mkcir p1 2.0)
  26. (mkcir p2 2.0)
  27. (mkcir p3 2.0)
  28. (mkcir p4 2.0)
  29. (mkcir (mapcar '(lambda (a b) (/ (+ a b) 2)) p1 p3) 2.0)
  30. (mkcir (mapcar '(lambda (a b) (/ (+ a b) 2)) p2 p4) 2.0)
  31. (mkcir (mapcar '(lambda (a b) (/ (+ a b) 2)) p3 p5) 2.0)
  32. (mkcir (mapcar '(lambda (a b) (/ (+ a b) 2)) p4 p6) 2.0)
  33. ))
  34. (princ)
  35. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 05:35 , Processed in 0.355705 second(s), 56 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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