明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3411|回复: 14

如何任意方向指定距离进行连续复制???

  [复制链接]
发表于 2013-1-13 12:55:55 | 显示全部楼层 |阅读模式
本帖最后由 lpl 于 2013-1-13 12:56 编辑

如何实现任意方向,能按输入的任意间距数据如400,800,1200,1600,2000........进行连续复制,求高手解决。。。
发表于 2013-1-13 15:23:59 | 显示全部楼层
本帖最后由 xiaodao520 于 2013-1-13 15:25 编辑

楼主应该悬赏,我也需要此代码,帮你顶上。
发表于 2013-1-13 16:10:34 | 显示全部楼层

本帖子中包含更多资源

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

x
发表于 2013-1-13 16:19:23 | 显示全部楼层
不错,下载看看!
发表于 2013-1-13 16:45:06 | 显示全部楼层
本帖最后由 kwok 于 2013-1-13 16:53 编辑

弄个简单的
(defun C:tt()
(SETQ ss (SSGET))
(setq p1 (getpoint "\n起点 :"))
(setq p2 (getpoint p1 "\n指定方向:"))
(setq ang (angle p1 p2))
(command "_.COPY" ss "" p1 (setq p1 (polar p1 ang 400)));;400是距离
(command "_.COPY" ss "" p1 (setq p1 (polar p1 ang 800)))
(command "_.COPY" ss "" p1 (setq p1 (polar p1 ang 1200)))
(PRINC)
)
发表于 2013-1-13 20:15:01 | 显示全部楼层
  1. (defun c:tt (/ ANG DIST I SNAPANG SS)
  2.   ;;wkq004 2013-01-13
  3.   (princ "\n选择要复制的实体<退出>-->")
  4.   (setq ss (ssget))
  5.   (if ss
  6.     (progn (if (setq ang (getangle (strcat "\n输入或点取复制角度<"
  7.                                            (rtos (setq snapang (/ (* 180 (getvar "snapang")) pi)) 2 2)
  8.                                            ">:"
  9.                                    )
  10.                          )
  11.                )
  12.              (setvar "snapang" snapang)
  13.            )
  14.            (if (setq dist (getdist "\n输入或点取复制距离:"))
  15.              (progn (princ "\n每次点击复制一次")
  16.                     (setq i 0)
  17.                     (while (getpoint) (setq i (1+ i)) (command "array" ss "" "r" 1 2 (* i dist)))
  18.              )
  19.            )
  20.     )
  21.   )
  22.   (princ)
  23. )
 楼主| 发表于 2013-1-13 21:14:11 | 显示全部楼层
004 发表于 2013-1-13 20:15

能否改下,实现像二楼类似能按一次性输入的距离进行偏移呢
 楼主| 发表于 2013-1-14 09:13:15 | 显示全部楼层
哪位大虾,写个。

点评

到底是复制还是偏移?  发表于 2013-1-14 10:58
发表于 2013-1-14 12:04:48 | 显示全部楼层
本帖最后由 x_s_s_1 于 2013-1-14 12:07 编辑

写了个复制的


  1. (defun c:test1 (/ str lt ss pt1 pt2 ang n obj)
  2.   (setq str (getstring t "\n输入间距|用,或空格分开|,回车结束:"))
  3.   (if (vl-string-search "," str)
  4.     (setq lst
  5.     (read
  6.       (strcat "("
  7.        (vl-list->string (subst 32 44 (vl-string->list str)))
  8.        ")"
  9.       )
  10.     )
  11.     )
  12.     (setq lst (read (strcat "(" str ")")))
  13.   )
  14.   (prompt "\n选择需复制图元")
  15.   (setq ss (ssget))
  16.   (setq pt1 (getpoint "\n方向起点:"))
  17.   (setq pt2 (getpoint pt1 "\n方向终点:"))
  18.   (setq ang (angle pt1 pt2))
  19.   (repeat (setq N (sslength ss))
  20.     (setq obj (vlax-ename->vla-object (ssname SS (1- n))))
  21.     (mapcar '(lambda (x)
  22.         (setq obj (vla-copy obj))
  23.         (vla-move obj
  24.     (vlax-3D-point pt1)
  25.     (vlax-3D-point (setq pt1 (polar pt1 ang x)))
  26.         )
  27.       )
  28.      lst
  29.     )
  30.     (setq N (1- N))
  31.   )
  32.   (princ)
  33. )

本帖子中包含更多资源

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

x
发表于 2013-1-14 16:29:09 | 显示全部楼层
向各位学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-19 06:12 , Processed in 0.222854 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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