ZZXXQQ
发表于 2011-6-25 21:10:01
7楼和13楼的可竖画。
raimo
发表于 2011-6-25 21:38:58
这个工具不错,但还不是我想要的情况,学习一下各位高手的源码,争取会改成自己想要的
raimo
发表于 2011-6-25 23:25:39
本帖最后由 raimo 于 2011-6-25 23:29 编辑
ZZXXQQ 发表于 2011-6-25 21:10 static/image/common/back.gif
7楼和13楼的可竖画。
在ZZXXQQ 7楼的基础上按照我自己的需要终于修改出来了..其实我需要的就是简单版,只画出里面部分,不要外部的范围框
但总觉得程序有点奇怪,
每次输完之后都保持在等待输入的状态而不自动退出,这是为什么呢?
请 ZZXXQQ 帮忙看看..
而且还有两个问题:
01 输入等分数后,都会自动附上一句未知命令“GZ,虽然不影响结果,看着还是怪不舒服的
第一角点 :
命令:GZ
第一角点 :
另一角点 :
输入等分数 :3 未知命令“GZ”。按 F1 查看帮助。
02.如果用esc取消的话,就有如下提示
命令:
GZ
第一角点 :*取消*
; 错误: *error* 函数中出错AutoCAD 变量设置被拒绝: "LUPREC" nil
ZZXXQQ
发表于 2011-6-26 00:00:14
;拉框N等分 明经 ZZXXQQ 2011.6.25
(defun c:gz ()
(setvar "CMDECHO" 0)
(setq oldos (getvar "OSMODE"))
(if (and (setq p1 (getpoint "\n第一角点 :"))
(setq p2 (getcorner p1 "\n另一角点 :"))
(setq n (getint "\n输入等分数 :"))
) (progn
(setvar "OSMODE" 0)
(setq dx (abs (- (car p2) (car p1)))
dy (abs (- (cadr p2) (cadr p1))))
(setq ptm (list (min (car p1) (car p2)) (min (cadr p1) (cadr p2)))
p2 (list (max (car p1) (car p2)) (max (cadr p1) (cadr p2)))
p1 ptm)
(if (> dx dy) (progn
(setq dd (/ dx n))
(repeat (- n 1)
(setq p3 (polar p1 0 dd)
p4 (polar p1 (/ pi 2) dy)
p5 (polar p4 0 dd))
(command "_.LINE" p5 p3 p4 "")
(command "_.LINE" p1 p5 "")
(setq p1 p3)
)
(setq p3 (polar p1 0 dd)
p4 (polar p1 (/ pi 2) dy)
p5 (polar p4 0 dd))
(command "_.LINE" p3 p4 "")
(command "_.LINE" p1 p5 "")
) (progn
(setq dd (/ dy n))
(repeat (- n 1)
(setq p3 (polar p1 (/ pi 2) dd)
p4 (polar p1 0 dx)
p5 (polar p3 0 dx))
(command "_.LINE" p4 p3 p5 "")
(command "_.LINE" p1 p5 "")
(setq p1 p3)
)
(setq p3 (polar p1 (/ pi 2) dd)
p4 (polar p1 0 dx)
p5 (polar p3 0 dx))
(command "_.LINE" p4 p3 "")
(command "_.LINE" p1 p5 "")
))
(command "_.RECTANG" ptm p2)
(setvar "OSMODE" oldos)
))
(setvar "CMDECHO" 1)
(princ)
)
zhynt
发表于 2011-6-26 01:16:03
本帖最后由 zhynt 于 2011-6-26 02:55 编辑
修改内容:
1、增加全局变量,记忆用户输入。
2、增加等分方向判断,负值为竖向等分。
3、增加内外框间隙宽度判断,负值为简化版无边框。
4、角点无输入退出。
raimo
发表于 2011-6-26 06:09:50
本帖最后由 raimo 于 2011-6-26 06:24 编辑
回复 ZZXXQQ 的帖子
多谢Z版帮忙修改,已经达到我想要的了..
另外想请教一下,如果我想用指定颜色画出,比如红色,该添加什么命令?
raimo
发表于 2011-6-26 06:16:25
本帖最后由 raimo 于 2011-6-26 06:21 编辑
回复 zhynt 的帖子
不好意思,我直说啊.请别生气....zhynt 这次你弄得有点复杂了.太想集成全部功能.可是
操作需要输入的太多,如果是简单少量的等分,那么纯手画也差不多能画出来了..
而且还使用了新的图层,这样会给图层绘图带来新的麻烦
减少用户判断,减少输入次数,点两下就能完成才是最实用的..
建议可以分拆命令.横向竖向最好可以自动判断,简单版的是一个,升级版的另一个..你弄的默认记忆就很好
ljpnb
发表于 2011-6-26 06:30:19
如果自己会编了,想做成什么样功能都能随心所欲,程序的目的就是多步操作集成在一个命令中,并且尽量智能化一点,让程序自动判断,甚至输入的数据可以用键盘直接输入,也可以用鼠标输入。。
yoyoho
发表于 2011-6-26 08:44:55
感谢z版及zhynt楼主分享学习!
zhynt
发表于 2011-6-26 09:34:41
本帖最后由 zhynt 于 2011-6-26 09:35 编辑
回复 raimo 的帖子
首先感谢明经,感谢CCTV,感谢MTV,感谢所有的TV,感谢raimo对我的关心。
关于横竖向等分的问题我是这样想的,其他的程序只能对长边进行等分,我的长短边均可等分。
关于你觉得太复杂,这个就仁者见仁智者见智了。
关于拆分命令的问题,你觉得是合成一个命令简单还是用两个命令简单呢?
关于简单的少量的等分,纯手画也差不多能画出来了的问题,那要看简单到什么程度,如果简单到只有个外框,那完全就不用编程序,cad本身就有。如果要等分加画叉线,我就不相信纯手工画会比程序快。首先,不论是纯手工还是用程序,取两点画框,和输入数值都是比不可少的,剩下的就是画线了,纯手工还要一条一条的去画,使用程序就可以自动帮你完成,你所哪个快呢?还有就是既然想到要编程序,那就是说工作中就经常要遇到,画起来很繁琐,很费时间。
===========分割线====================
以上仅代表个人观点,如有不适请跳过。