leeyuan 发表于 2007-11-27 22:31:00

能否将对象根据某条曲线进行阵列?

liuyimian 发表于 2008-5-1 11:28:00

能否根据一条曲线在不规则的范围内列阵呢,就像填充一样

董堃 发表于 2008-5-4 20:53:00

建议改成中文的

众山小 发表于 2008-5-22 09:50:00

非常有用,谢谢楼主,比cad自带的快捷有效

669423907 发表于 2011-4-18 23:20:19

谢谢楼主!

yhkk0317 发表于 2011-5-31 15:28:12

谢谢楼主共享,常用LSP

raimo 发表于 2011-6-1 07:53:10

本帖最后由 raimo 于 2011-6-1 07:58 编辑

试了一下,直线的陈列不错,但是在指定起点的时候有问题,
比如双向陈列中指定起点之后,实际陈列出来的还是在对象本身的原点开始,并非指定的起点

另外,似乎无法完成环形陈列,等分陈列(就是不指定间距,指定陈列数量和总距离)啊,如果楼主能完善一下那这个程序就牛了

YANGF85 发表于 2011-6-5 19:48:01

为什么程序木有注释

pb.v@163.com 发表于 2011-7-2 15:03:40

你好,我的这个阵列想修改为:执行命令-选择对象-输入步距-输入列数-空格OK,如果阵列后图元变为8号色更好,现在的这个LISP输入的是图元间距,而不是步距,谢谢大哥帮忙看看
;;简易矩形阵列
(defun C:PAR()
(vl-load-com)
(setvar "cmdecho" 0)
(command "ucs" "w")
(princ "\n请选择要阵列的物体:")
(while(null(setq en (ssget))))
(setq minx0 1e6 miny0 1e6 maxx0 -1e6 maxy0 -1e6)
(setq i 0)
(repeat (sslength en)
   (setq end (ssname en i))
   (setq end_data (entget end))
   (Min_Max)
   (setq i(1+ i))
)
(setq pmin (list minx0 miny0)
      pmax (list maxx0 maxy0))
(setq yc (- maxx0 minx0) xc (- maxy0 miny0))
(if (not hs)(setq hhs 2)(setq hhs (fix hs)))
(if (not ls)(setq lls 2)(setq lls (fix ls)))

(if (not hs)(setq hs hhs))
(initget 6)(setq ls(getint (strcat "\n请输入工站数:<" (itoa lls) ">")))
(if (not ls)(setq ls lls))
(if (not jjj)(setq jjj 2))
(initget 128)
(setq jj(getpoint (strcat "\n请输入间距:<默认为" (rtos jjj) ">或鼠标框选:")))
(cond ((= (type jj) nil)(setq jj jjj jjj jj hj(+ xc jj) lj(+ yc jj)))
      ((= (type jj) 'STR)(setq jj(read jj) jjj jj hj(+ xc jj) lj(+ yc jj)))
      ((= (type jj) 'list)(setq p1 jj)
                            (initget 1) (setq p2(getcorner p1 "指定对角点:"))
                          (setq lj(abs(- (car p2) (car p1)))
                                hj(abs(- (cadr p2) (cadr p1))))
        )
                               
)
(command "undo" "be")
(command "array" en "" "r"hsls hj lj)
(command "undo" "e")
(princ)
)
;;;子程序,求选集是大外形坐标
(defun Min_Max()
(vla-getboundingbox(vlax-ename->vla-object end) 'minp 'maxp)
(setq minp (vlax-safearray->list minp)
      maxp (vlax-safearray->list maxp))
(setq minx (car minp)
      maxx (car maxp)
      miny (cadr minp)
      maxy (cadr maxp))
(if (> minx0 minx) (setq minx0 minx))
(if (> miny0 miny) (setq miny0 miny))
(if (< maxx0 maxx) (setq maxx0 maxx))
(if (< maxy0 maxy) (setq maxy0 maxy))
)

cumtjh 发表于 2011-7-2 16:58:53

能不能把阵列的功能扩展到沿着某一条线阵列,也就是所谓的路径阵列或者曲线阵列,保证相对位置不变!我想了一段时间了,一直没有一个很好 的解决办法!不知道有没有人有好的方法解决这个问题!
请楼主编写一个沿曲线阵列的程序,很想用上
页: 1 2 [3] 4
查看完整版本: 自编快速阵列对象程序,与大家分享