999999 发表于 2020-8-5 16:42:47

百叶窗关于捕捉点及记忆功能

本帖最后由 999999 于 2020-8-5 17:25 编辑

各路大神,以下是春婵大神提供的百叶窗源码改动了一点:
目前遇到的问题就是(运行命令生成百叶完成后,捕捉点可以还原(如图1),但是运行命令后,我中途取消命令(则变成了图2))
麻烦大神帮忙更改一下代码:1.就是如果中途退出捕捉点还原为(生成百叶后的捕捉点状态)2.就是宽度值和分隔近似值增加记忆功能
(defun c:by ()
(setvar "CMDECHO" 0)
(command "_undo" "be")
(setq os (getvar "osmode"))
(setvar "osmode" 33)
(setq pt1 (getpoint "\n框选范围:")
pt3 (getcorner pt1)
pt2 (list (car pt1) (cadr pt3))
)
(setq kd (getreal "\n百叶框和条宽度<90>: "))
(if (null kd)
    (setq kd 90)
)
(setq jd (getreal "\n百叶分隔近似值间距<108>: "))
(if (null jd)
    (setq jd 108)
)
(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)
)
(setvar "osmode" 0)
(setq p1 (list (+ kd (car pt2)) (+ kd (cadr pt2))))
(setq p2 (list (- (car pt3) kd) (+ dst (cadr pt3))))
(command ".rectang" "_non" pt1 "_non" pt3)
(xlr_submod (entlast) 8 "layer2")
(command ".rectang" "_non" p1 "_non" p2)
(xlr_submod (entlast) 8 "layer7")
(setq recSS (entlast))
(command ".chprop" recSS "" "c" Bylayer "")
(command "_.COPY" recSS "" "M" p1)
(repeat nmb
    (command (setq p1 (polar p1 ang dst)))
)
(command "")
(setvar "osmode" os)
(command "_undo" "e")
(setvar "CMDECHO" 1)
(princ)
)
(defun xlr_submod (ename code newvalue / a el)
(if (setq a (assoc code (setq el (entget ename))))
    (entmod (subst (cons code newvalue)
   a
   el
   )
    )
    (entmod (append el (list (cons code newvalue))))
)
(entupd ename)
ename
)
(princ "\n本程序版权所有 盗用必究!")
(princ "\n本程序命令:BY")
(princ)

hhh454 发表于 2020-8-6 20:18:18

代码已经修改实现你提出的2个问题,里面有错误和中途退出时恢复捕捉的函数,还是常用的代码开头的写法,可以直接复制使用,代码最后还有些小问题,我没有改了,我的春婵百叶现在已经用对话框形式了,代码中有记忆的写法也可以写到其他的程序中。
附件下载

e2002 发表于 2020-8-6 10:13:29

1. 你需要在error handle 函数中恢复原有的sysvar的值。
2. 关于用到的数值的保存与读取,简单点你就用注册表。

999999 发表于 2020-8-6 11:48:06

e2002 发表于 2020-8-6 10:13
1. 你需要在error handle 函数中恢复原有的sysvar的值。
2. 关于用到的数值的保存与读取,简单点你就用注 ...

谢谢大神,我不懂你说的这些,本人是小白一枚

czb203 发表于 2020-8-6 13:18:46


是个很好地方法感谢分享

hhh454 发表于 2020-8-6 20:19:06

第一次输入数值后,后面的都有记忆了

999999 发表于 2020-8-6 21:03:24

hhh454 发表于 2020-8-6 20:18
代码已经修改实现你提出的2个问题,里面有错误和中途退出时恢复捕捉的函数,还是常用的代码开头的写法,可 ...

谢谢大神,已经下载使用了,很好用

下文没句号。 发表于 2022-10-31 23:45:54

hhh454 发表于 2020-8-6 20:18
代码已经修改实现你提出的2个问题,里面有错误和中途退出时恢复捕捉的函数,还是常用的代码开头的写法,可 ...

来学习来学习

zmzk 发表于 2022-12-2 21:14:57

good idea,学习了
页: [1]
查看完整版本: 百叶窗关于捕捉点及记忆功能