明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1721|回复: 22

[源码] 简化阵列

[复制链接]
发表于 2020-12-10 17:06 | 显示全部楼层 |阅读模式
本帖最后由 GDFGFGF 于 2020-12-10 17:08 编辑

麻烦哪位大神帮忙优化下,感激不尽
简化阵列
(defun c:rrR(/ *hang2 *jj2 *lie2 a1 ab1 b1 ss xlen ylen)
(setq ss (ssget))
(setq ab1 (box ss) a1 (car ab1) b1         (cadr ab1))
(setq xlen (abs (- (car b1) (car a1))))
(setq ylen (abs (- (cadr b1) (cadr a1))))
(if (not *hang)(setq *hang 1))
(setq *hang (if (setq *hang2 (getint (strcat "\n输入行数:<" (itoa *hang) ">:"))) *hang2  *hang))
        
(if (not *lie)(setq *lie 1))
(setq *lie (if (setq *lie2 (getint (strcat "\n输入列数:<" (itoa *lie) ">:"))) *lie2 *lie))
(if (not *jj)(setq *jj 100))        
(setq *jj (if (setq *jj2 (getdist (strcat "\n输入间距:<" (rtos *jj 2 2) ">:"))) *jj2 *jj))
(command "ARRAY" ss "" "r" *hang *lie (+ ylen *jj) (+ xlen *jj))
;(princ)        
)

按x轴阵列是没有问题但是按Y轴阵列就会出现重叠的现象

本帖子中包含更多资源

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

x
 楼主| 发表于 2020-12-11 09:03 | 显示全部楼层
999999 发表于 2020-12-11 08:39
支持一下,,,有心无力


(defun c:rr (/ *hang2 *jj2 *lie2 a1 ab1 b1 ss xlen ylen)
(setq ss (ssget))
(setq ab1 (box ss) a1 (car ab1) b1         (cadr ab1))
(setq xlen (abs (- (car b1) (car a1))))
(setq ylen (abs (- (cadr b1) (cadr a1))))
(if (not *hang)(setq *hang 1))
(setq *hang (if (setq *hang2 (getint (strcat "\n输入行数:<" (itoa *hang) ">:"))) *hang2  *hang))
       
(if (not *lie)(setq *lie 1))
(setq *lie (if (setq *lie2 (getint (strcat "\n输入列数:<" (itoa *lie) ">:"))) *lie2 *lie))
(if (not *jj)(setq *jj 100))       
(setq *jj (if (setq *jj2 (getdist (strcat "\n输入间距:<" (rtos *jj 2 2) ">:"))) *jj2 *jj))
(if (= 1 *hang) (command "ARRAY" ss "" "r" *hang *lie (+ xlen *jj)) (command "ARRAY" ss "" "r" *hang *lie (+ ylen *jj) (+ xlen *jj)))
;(princ)        
)

;;;;;单个图元包围盒
(defun eBox (ent / ll ur)
  (vla-getboundingbox (vlax-ename->vla-object ent) 'll 'ur)
  (mapcar 'safearray-value (list ll ur))
)
;;;;;;;;;;
;;;;;;;;;;
;;;;;求点集中最小和最大点
(defun minmax(plist)
(list (apply 'mapcar (cons 'min plist))
      (apply 'mapcar (cons 'max plist)))
)
;;(mapcar '(lambda ( a b ) (apply 'mapcar (cons a b))) '(min max) (list plist plist))
;;;;;选择集最大包围盒
(defun box  (ss / i en plist pt1 pt2 a b ab)
  (setq        plist '() i -1)
  (repeat (sslength ss)
    (setq i  (1+ i) en (ssname ss i))
    (setq box1(ebox en) pt1(car box1) pt2(cadr box1))
    (setq plist(cons pt1 plist) plist(cons pt2 plist))
    )
(minmax plist)

  )
回复 支持 1 反对 0

使用道具 举报

发表于 2020-12-11 10:40 | 显示全部楼层
本帖最后由 999999 于 2020-12-11 10:57 编辑
GDFGFGF 发表于 2020-12-11 10:26
你还有什么好用的程序不,交换下

我的都是在明经里面找到,还有就是E派工具箱+加贱人+燕秀+mini建筑工具+春婵,就是想实现的功能太散了
发表于 2020-12-11 08:39 | 显示全部楼层
支持一下,,,有心无力
 楼主| 发表于 2020-12-11 09:02 | 显示全部楼层
999999 发表于 2020-12-11 08:39
支持一下,,,有心无力

已经好了,你要不要
 楼主| 发表于 2020-12-11 09:04 | 显示全部楼层
999999 发表于 2020-12-11 08:39
支持一下,,,有心无力

自己复制出去,加载到CAD就行
发表于 2020-12-11 09:12 | 显示全部楼层
GDFGFGF 发表于 2020-12-11 09:03
(defun c:rr (/ *hang2 *jj2 *lie2 a1 ab1 b1 ss xlen ylen)
(setq ss (ssget))
(setq ab1 (box ss)  ...

牛批呀,,,用了一下,真爽
发表于 2020-12-11 09:13 | 显示全部楼层
GDFGFGF 发表于 2020-12-11 09:04
自己复制出去,加载到CAD就行

谢谢啦,,对了,,你有没有用LSP加载外部插件的代码,,,,突然想试一下
 楼主| 发表于 2020-12-11 10:17 | 显示全部楼层
999999 发表于 2020-12-11 09:13
谢谢啦,,对了,,你有没有用LSP加载外部插件的代码,,,,突然想试一下[face ...

高深的不会
 楼主| 发表于 2020-12-11 10:26 | 显示全部楼层
999999 发表于 2020-12-11 09:12
牛批呀,,,用了一下,真爽

你还有什么好用的程序不,交换下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-26 00:18 , Processed in 0.369456 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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