明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5201|回复: 19

[已解答] 求点选矩形,点上边,向上复制;点右边,向右复制;点下边,向下复制

[复制链接]
发表于 2014-4-11 10:06:30 | 显示全部楼层 |阅读模式
100明经币
本帖最后由 品茗新秀 于 2014-4-11 12:52 编辑

求点选矩形,点上边,向上复制;点右边,向右复制;点下边,向下复制;复制距离,用户输入;复制个数,用户输入。


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

点评

“先学好语文”  发表于 2014-4-11 14:07
发表于 2014-4-11 10:06:31 | 显示全部楼层
品茗新秀 发表于 2014-4-11 15:40
确实不错,如果矩形内有图元,也能一起复制就好了
  1. (defun ebox (e / pa pb)
  2.          (Vlax-Invoke-Method (Vlax-Ename->Vla-Object e ) 'GetBoundingBox 'pa 'pb )
  3.              (setq pa (trans (vlax-safearray->list pa) 0 1)
  4.                    pb (trans (vlax-safearray->list pb) 0 1)
  5.              )
  6.              (list pa pb)
  7. )
  8. (defun mid (p1 p2) (mapcar '* '(0.5 0.5 0.5) (mapcar '+ p1 p2)))
  9. (defun c:tt ( / box d e h n p p1 p2 pc w ss)
  10.         (setvar "osmode" 2)
  11.         (while (setq p (getpoint "\n以点取边为阵列方向:"))
  12.                 (setq e (ssname (ssget "c" p p '((0 . "LWPOLYLINE"))) 0)
  13.                 n (getint "\n数量:")
  14.                 d (getdist "\n间距:")
  15.                 box (ebox e)
  16.                 p1 (car box)
  17.                 p2 (cadr box)
  18.                 ss (ssget "c" p1 p2)
  19.                 pc (mid p1 p2)
  20.         )
  21.         (mapcar 'set '(w h) (mapcar '- p2 p1))
  22.         (cond
  23.                 ((and (> (car p) (car pc)) (equal (cadr p) (cadr pc))) (vl-cmdf "-array" ss "" "r" 1 n (+ d w)))
  24.                 ((and (< (car p) (car pc)) (equal (cadr p) (cadr pc))) (vl-cmdf "-array" ss "" "r" 1 n (* -1 (+ d w))))
  25.                 ((and (equal (car p) (car pc)) (> (cadr p) (cadr pc))) (vl-cmdf "-array" ss "" "r" n 1 (+ d h)))
  26.                 (t (vl-cmdf "-array" ss "" "r" n 1 (* -1 (+ d h))))
  27.         )
  28. )
  29. )
回复

使用道具 举报

发表于 2014-4-11 10:38:49 | 显示全部楼层
懸賞100個,好誘人
可是看過你的帖,從來就沒有給足過

点评

最好发了个链接证明,嘿嘿  发表于 2014-4-16 16:35
回复

使用道具 举报

发表于 2014-4-11 11:06:15 | 显示全部楼层
cad基本命令搞明白了么
回复

使用道具 举报

发表于 2014-4-11 11:54:47 来自手机 | 显示全部楼层
套哥………你要用人民币求……你那么牛B
回复

使用道具 举报

发表于 2014-4-11 12:19:02 | 显示全部楼层
这么简单?
回复

使用道具 举报

 楼主| 发表于 2014-4-11 12:45:51 | 显示全部楼层
本帖最后由 品茗新秀 于 2014-4-11 12:55 编辑
Q1241274614 发表于 2014-4-11 12:19
这么简单?

对我们初学者不简单,想了半天,终于完成了一点点,得出中心点,与点取点比较,就会知道复制的方向,但如果想一次多复制几个,这个自我感觉还是有点难

顶出高手,非常想跟在后面好好学习一下
回复

使用道具 举报

发表于 2014-4-11 12:59:56 | 显示全部楼层
去研究下array命令先!

点评

谢谢提醒,这个我怎么就没想到呢  发表于 2014-4-11 13:10
回复

使用道具 举报

发表于 2014-4-11 13:30:17 | 显示全部楼层

  1. ;; 需要e派工具箱(XCAD)的支持:[url]http://yunpan.cn/QXQKsW9gAPmpF[/url]
  2. ;; 另类阵列 2014-04-11
  3. (defun c:tt ()
  4.   (xyp-CMDLA0)
  5.   (xyp-initSet '(dist int) '(1100. 5))
  6.   (setq dist (UREAL 7 "" "间距" dist))
  7.   (setq int (Uint 7 "" "数量" int))
  8.   (while (and (setq e1 (entsel "\n选择: "))
  9.               (setq s1 (car e1))
  10.               (xyp-etype s1 "lwpolyline")
  11.               (= (xyp-DXF 90 s1) 4)
  12.               (= (xyp-DXF 70 s1) 1)
  13.          )
  14.     (setq p0 (osnap (cadr e1) "near")
  15.           p1 (xyp-9pt s1 1)
  16.           p3 (xyp-9pt s1 3)
  17.           p7 (xyp-9pt s1 7)
  18.           p9 (xyp-9pt s1 9)
  19.     )
  20.     (cond ((xyp-3PointAtLine p1 p0 p3) (xyp-ArrayRV s1 int (- dist)))
  21.           ((xyp-3PointAtLine p7 p0 p9) (xyp-ArrayRV s1 int dist))
  22.           ((xyp-3PointAtLine p1 p0 p7) (xyp-ArrayRH s1 int (- dist)))
  23.           ((xyp-3PointAtLine p3 p0 p9) (xyp-ArrayRH s1 int dist))
  24.     )
  25.   )
  26.   (xyp-CMDLA1)
  27. )

本帖子中包含更多资源

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

x

点评

不错,可惜如果内部一个圆,由于有伪源码,修改困难。对初学者就难了  发表于 2014-4-11 13:54

评分

参与人数 1明经币 +1 收起 理由
品茗新秀 + 1

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-4-11 14:39:08 | 显示全部楼层
xyp1964 发表于 2014-4-11 13:30

演示的意思就是这个意思,可是太高深了,对初学者没办法学习

点评

有渔又有鱼...  发表于 2014-4-11 14:48
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-25 01:21 , Processed in 0.226299 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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