明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: GDFGFGF

[源码] 哪位大师能不能帮我修改下这个画百叶程序

[复制链接]
发表于 2020-12-10 14:19 | 显示全部楼层
如果后面又要修改80呢?
回复

使用道具 举报

 楼主| 发表于 2020-12-10 14:24 | 显示全部楼层
xvjiex 发表于 2020-12-10 14:19
如果后面又要修改80呢?

就像类似命令做个子选项,需要改时调出子选项,不需要就作为默认选项

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2020-12-10 14:27 | 显示全部楼层
这个可以,请稍等。
回复

使用道具 举报

 楼主| 发表于 2020-12-10 14:32 | 显示全部楼层
xvjiex 发表于 2020-12-10 14:27
这个可以,请稍等。

好的,大师辛苦了
回复

使用道具 举报

发表于 2020-12-10 15:15 | 显示全部楼层
已经简化,需要改时调出子选项,不需要就作为默认选项。
回复

使用道具 举报

 楼主| 发表于 2020-12-10 15:18 | 显示全部楼层
xvjiex 发表于 2020-12-10 12:23
帮你改了,请测试。

已经调整,再试试。

已经是我想要的了,感谢大神
回复

使用道具 举报

 楼主| 发表于 2020-12-10 15:28 | 显示全部楼层
本帖最后由 GDFGFGF 于 2020-12-10 15:34 编辑
xvjiex 发表于 2020-12-10 15:15
已经简化,需要改时调出子选项,不需要就作为默认选项。

看看还有谁需要的    (defun c:bC ( / th1 th2 i1 ss en pt1 pt2 pt3 dd nmb dst ang p1 p2 recSS)        (setvar "CMDECHO" 0)
        (command "_undo" "be")
        (defun en11pt (en n / ll rr box ptn a p1 p2 p3 p4 p5 p6 p7 p8 p9)
                (setq en (vlax-ename->vla-object en))
                (vla-GetBoundingBox en 'll 'rr)
                (setq a  (list (vlax-safearray->list ll) (vlax-safearray->list rr))
                        p1 (car a)
                        p9 (cadr a)
                        p5 (mapcar '(lambda (x y) (* (+ x y) 0.5)) p1 p9)
                        p2 (list (car p5) (cadr p1)0.)
                        p3 (list (car p9) (cadr p1)0.)
                        p4 (list (car p1) (cadr p5)0.)
                        p6 (list (car p9) (cadr p5)0.)
                        p7 (list (car p1) (cadr p9)0.)
                        p8 (list (car p5) (cadr p9)0.)
                )
                (nth (1- n) (list p1 p2 p3 p4 p5 p6 p7 p8 p9))
        )
        (or kd (setq kd 100))
        (or jd (setq jd 200))
        (princ (strcat"\n请选择矩形。百叶框和条宽度<"(rtos kd 2 2)">;百叶分隔<"(rtos jd 2 2)">,更改请直接右键(不选择任何矩形)。"))
  (while (not(setq ss(ssget '((0 . "LWPOLYLINE")))))
                (setq th1 (getreal (strcat"\n请输入百叶框和条宽度<"(rtos kd 2 2)">:")))
                (if th1 (setq kd th1))
                (setq th2 (getreal (strcat"\n请输入百叶分隔近似值间距<"(rtos jd 2 3)">:")))
                (if th2 (setq jd th2))
                (princ (strcat"\n请选择矩形。百叶框和条宽度<"(rtos kd 2 2)">;百叶分隔<"(rtos jd 2 2)">,更改请直接右键(不选择任何矩形)。"))
        )   
        (setq i1 -1)
        (while (setq en (ssname ss (setq i1 (1+ i1))))
                (setq pt2 (en11pt en 1))
                (setq pt1 (en11pt en 7))
                (setq pt3 (en11pt en 3))
                (setq  dd (- (distance pt1 pt2) kd)
                        nmb (/ dd (+ kd jd))
                        nmb (atoi (rtos nmb 2 0))
                        dst (/ dd nmb)
                        ang (angle pt2 pt1)
                        nmb (1- nmb)
                )
                (setq p1 (list (+ kd (car pt2))(+ kd (cadr pt2)) ))
                (setq p2 (list (- (car pt3) kd)(+ dst (cadr pt3)) ))
                (command ".rectang"  "_non" p1 "_non" p2)
                (setq recSS (entlast))
                (command ".chprop" recSS "" "c" Bylayer )
                (command "_.COPY" recSS "" "M" "_non" p1)
                (repeat nmb
                        (command "_non" (setq p1 (polar p1 ang dst)))
                )
                (command "")
        )
       
        (command "_undo" "e")
        (setvar "CMDECHO" 1)
        (princ)
)

(princ "\n本程序采摘自www.lisp123.com更多内容敬请期待!")
(princ "\n本程序命令:BC")
(princ)
回复

使用道具 举报

 楼主| 发表于 2020-12-10 17:03 | 显示全部楼层
xvjiex 发表于 2020-12-10 11:07
帮你改了,请测试。

已经调整,再试试。

简化阵列
(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
回复

使用道具 举报

 楼主| 发表于 2020-12-11 19:42 | 显示全部楼层
xvjiex 发表于 2020-12-10 14:27
这个可以,请稍等。

大师,又出现问题了,麻烦再优化下

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2020-12-11 20:02 | 显示全部楼层
这个估计是坐标系统的问题,请在正常的坐标系统下画矩形。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-5 13:12 , Processed in 0.185492 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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