几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » 数据库ObjectDBX
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


回复
 
主题工具 搜索本主题 显示模式
旧 2009-04-28, 12:34 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】多义线焊接

多义线焊接
www.dimcax.com
多义线焊接
程序名称:typolylinejoin (
< 桐阳模具cad>
< ://tymoju.blogspot.com>

不错!是用什么语言写的?

编辑多段线命令pedit原就可以连接线段,楼主的插件只是便捷而已

什么好东西啊?看看先
勤能补拙

怎么现在发的东西都是编过的,不可以发lisp吗?
勤能补拙

效果相当不理想!
勤能补拙

(defun c:ct () (command "pedit" "m" (ssget) "" "y" "j" "j" "b" "0.00000" ""))
上传源代码。建议给我+威望。
只要输入ct就行了。快捷命令自己改

:
不错!是用什么语言写的?
谢谢支持,是用lisp写的,然后进行了编译。
< 桐阳模具cad>
< ://tymoju.blogspot.com>

:
怎么现在发的东西都是编过的,不可以发lisp吗?
请原谅,我只是为了提醒大家注意我的网站而已,如果有人对源代码感兴趣,可以和我联系。
本程序的源代码在下面。
(defun c:typlj (/ old-ucsname old-osmode)
(defun *error* (s)
;;; (setvar "pickbox" 10);本人喜欢把选择指示光标放的稍大一些,
;发给大家时去掉了
;;; (vl-cmdf "dimlfac" 1)
(vl-cmdf "ortho" "on")
(setvar "osmode" old-osmode)
;;; (setvar "ucsname" old-usename)
(prin1)
)
(defun main_polylinejoin (/ ss ss1 l e1-dxf e1-type p p1 p2 open-close obj1 isclose)
(vl-cmdf "ucs" "w")
(setq ss (ssget))
(setq e1-dxf (entget (ssname ss 0)))
(cond ((= (sslength ss) 1)
(setq p (getvar "viewctr"))
(setq p1 (polar p (* pi 1.25) 1000)
p2 (polar p (* pi 0.25) 1000)
)
(vl-cmdf "zoom" "w" p1 p2)
(setq ss1 (ssget "c" p1 p2))
(vl-cmdf "zoom" "p")
)
(t (setq ss1 ss))
)
(setq e1-type (cdr (assoc 0 e1-dxf)))
(if (wcmatch e1-type "*polyline")
(setq open-close (cdr (assoc 70 e1-dxf)))
(setq open-close nil)
)
(cond ((equal open-close 0) (vl-cmdf "pedit" ss "j" ss1 "" ""))
((equal open-close 1))
(t (vl-cmdf "pedit" ss "y" "j" ss1 "" ""))
)
(setq s1 (ssget "l")
e1 (ssname s1 0)
e1-dxf (entget e1)
obj1 (vlax-ename->vla-object e1)
isclosed (vla-get-closed obj1) ;是否闭合
)
(if (equal isclosed :vlax-true)
(print "polyline is close...")
(print "polyline not close...")
)
(setq p1 (vlax-safearray->list (vlax-variant-value (vla-get-coordinate obj1 0)))
p2 (vlax-safearray->list (vlax-variant-value (vla-get-coordinate obj1 1)))
)
(grdraw p1 (polar p1 (+ (angle p1 p2) (* pi 0.50)) (/ (getvar "viewsize") 15.0)) 2)
(grdraw p1 (polar p1 (+ (angle p1 p2) (* pi 0.35)) (/ (getvar "viewsize") 50.0)) 2)
(grdraw p1 (polar p1 (+ (angle p1 p2) (* pi 0.65)) (/ (getvar "viewsize") 50.0)) 2)
(if (/= old-ucsname "")
(vl-cmdf "ucs" "r" old-ucsname)
)
)
(setq old-ucsname (getvar "ucsname")
old-osmode (getvar "osmode")
)
(princ "\nthank you for using tylisp.")
(princ "\nplease visit ://tymoju.blogspot.com/")
(print)
(main_polylinejoin)
(setvar "osmode" old-osmode)
;;; (setvar "ucsname" old-usename)
(princ)
)
< 桐阳模具cad>
< ://tymoju.blogspot.com>

:
(defun c:ct () (command "pedit" "m" (ssget) "" "y" "j" "j" "b" "0.00000" ""))
上传源代码。建议给我+威望。
只要输入ct就行了。快捷命令自己改
不伦不类朋友的程序,和我的相比有点不同:
(1)你的程序需要先构造选择集,即需要把要连接的目标全部选上——我的程序最大的好处就是只要点选其中一条直线或圆弧回车就可以了;
(2)请你试一下,你的程序是否可以将两条多义线连接成一条?
< 桐阳模具cad>
< ://tymoju.blogspot.com>

不知大家注意到没有,这个程序中有一点我感到不十分满意。请看程序中下面的片段:
(setq p (getvar "viewctr"))
(setq p1 (polar p (* pi 1.25) 1000)
p2 (polar p (* pi 0.25) 1000)
)
(vl-cmdf "zoom" "w" p1 p2)
(setq ss1 (ssget "c" p1 p2))
(vl-cmdf "zoom" "p")
这一段程序的作用,是把要连接的目标zoom到视区中来,以便于用ssget构造选择集,然后再zoom回去。这么做的原因,是因为用ssget的c方式,不能选上视区以外的目标。可这样以来,屏幕会有一下抖动。
请问那位朋友有办法解决这个问题?
< 桐阳模具cad>
< ://tymoju.blogspot.com>
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
回复


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 10:13 PM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多