lpl 发表于 2013-1-13 12:55:55

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

本帖最后由 lpl 于 2013-1-13 12:56 编辑

如何实现任意方向,能按输入的任意间距数据如400,800,1200,1600,2000........进行连续复制,求高手解决。。。

xiaodao520 发表于 2013-1-13 15:23:59

本帖最后由 xiaodao520 于 2013-1-13 15:25 编辑

楼主应该悬赏,我也需要此代码,帮你顶上。

cable2004 发表于 2013-1-13 16:10:34

Q1241274614 发表于 2013-1-13 16:19:23

不错,下载看看!

kwok 发表于 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)
)

004 发表于 2013-1-13 20:15:01


(defun c:tt (/ ANG DIST I SNAPANG SS)
;;wkq004 2013-01-13
(princ "\n选择要复制的实体<退出>-->")
(setq ss (ssget))
(if ss
    (progn (if (setq ang (getangle (strcat "\n输入或点取复制角度<"
                                           (rtos (setq snapang (/ (* 180 (getvar "snapang")) pi)) 2 2)
                                           ">:"
                                   )
                       )
             )
             (setvar "snapang" snapang)
           )
           (if (setq dist (getdist "\n输入或点取复制距离:"))
             (progn (princ "\n每次点击复制一次")
                  (setq i 0)
                  (while (getpoint) (setq i (1+ i)) (command "array" ss "" "r" 1 2 (* i dist)))
             )
           )
    )
)
(princ)
)

lpl 发表于 2013-1-13 21:14:11

004 发表于 2013-1-13 20:15 static/image/common/back.gif


能否改下,实现像二楼类似能按一次性输入的距离进行偏移呢

lpl 发表于 2013-1-14 09:13:15

哪位大虾,写个。

x_s_s_1 发表于 2013-1-14 12:04:48

本帖最后由 x_s_s_1 于 2013-1-14 12:07 编辑

写了个复制的


(defun c:test1 (/ str lt ss pt1 pt2 ang n obj)
(setq str (getstring t "\n输入间距|用,或空格分开|,回车结束:"))
(if (vl-string-search "," str)
    (setq lst
    (read
      (strcat "("
       (vl-list->string (subst 32 44 (vl-string->list str)))
       ")"
      )
    )
    )
    (setq lst (read (strcat "(" str ")")))
)
(prompt "\n选择需复制图元")
(setq ss (ssget))
(setq pt1 (getpoint "\n方向起点:"))
(setq pt2 (getpoint pt1 "\n方向终点:"))
(setq ang (angle pt1 pt2))
(repeat (setq N (sslength ss))
    (setq obj (vlax-ename->vla-object (ssname SS (1- n))))
    (mapcar '(lambda (x)
      (setq obj (vla-copy obj))
      (vla-move obj
    (vlax-3D-point pt1)
    (vlax-3D-point (setq pt1 (polar pt1 ang x)))
      )
      )
   lst
    )
    (setq N (1- N))
)
(princ)
)

zyhandw 发表于 2013-1-14 16:29:09

向各位学习了
页: [1] 2
查看完整版本: 如何任意方向指定距离进行连续复制???