明经CAD杂志(总第11期,2005第5期)出版
主要内容:<BR>业界新闻<BR> 设计本质完美演进─AutoCAD 2006繁体中文版上市<BR>精品图书<BR> AutoCAD ObjectARX程序开发技术<BR> AutoCAD 2005中文版标准实例教程<BR>基础应用<BR> 旋转图形时保留原图的方法<BR> SPLINE偏移后为什么夹点数量会变得很多<BR> 实现X、Y、Z不等比例缩放<BR> 斜线变为水平线的方法<BR> 图纸空间全屏化<BR> 命令前加“-”与不加“-”的区别<BR> 在标注文字时,标注上下标的方法<BR>作品鉴赏<BR> 投影光源总成3D效果<BR> 椅子<BR>开发天地<BR> 获取Windows系统路径的方法<BR> CAD外挂程序简繁切换<BR> 弧长的标注方法<BR> 保留对话框中上次输入的值<BR> 在VB或VBA中使用延时<BR> 让你的VBA或VB程序也能播音乐<BR>经典源码<BR> 获取多义线的x,y坐标<BR> 扩展数据追加<BR> 两对象交点<BR> 多段线和其他线的交点改为多段线的顶点<BR> 返回对齐标注或转角标注的标注点坐标<BR> 文字加外框<BR> 原位置COPY物件到其它图档<BR>热门讨论<BR> 世界是不是可以拿掉轮子<BR>明经学堂<BR> 使用VB.net开发AutoCAD 2005(四)<BR> ObjectDCL学习笔记(四)<BR> 三维造型与装配(三)<BR>专题文章<BR> FSO对象模型在VB中的应用<BR> 用VB操作注册表下载:<BR><A href="http://www.mjtd.com/mcdown/list.asp?id=532" target="_blank" >http://www.mjtd.com/mcdown/list.asp?id=532</A>
浏览:<BR><A href="http://www.mjtd.com/e-zine/mezine0505.HTM" target="_blank" >http://www.mjtd.com/e-zine/mezine0505.HTM</A> thanks! 有新料,顶一顶 补充一个两个曲线实体交点表;| ----梁雄啸.2003.12 完成!
函数: (x_intlst 实体1 实体2 参数)
功能:求两实体的交点表 -----参数合集,实体可以是vla-object或者ename实体;
参数: 0---实交点表;
1---延伸第一选择实体的交点表;
2---延伸第二选择实体的交点表;
3---延伸两个实体的交点表;
|;
;|(setq e1 (vlax-ename->vla-object (car(entsel "\n1:")))
e2 (vlax-ename->vla-object (car(entsel "\n2:")))
lst (x_intlst e1 e2 0)) ;测试|;;;;
(defun x_intlst (obj1 obj2 param / intlst1 intlst2 ptlst)
(if (= 'ENAME (type obj1))(setq obj1 (vlax-ename->vla-object obj1)))
(if (= 'ENAME (type obj2))(setq obj2 (vlax-ename->vla-object obj2)))
(setq intlst1 (vlax-variant-value (vla-intersectwith obj1 obj2 param)))
(if (< 0 (vlax-safearray-get-u-bound intlst1 1)) ;是0< 不能是/=0.
(progn
(setq intlst2 (vlax-safearray->list intlst1)) ;得点值表,非点表;
(while (> (length intlst2) 0) ;3数做一元素生成表;
(setq ptlst (cons (list (car intlst2)(cadr intlst2)(caddr intlst2)) ptlst)
intlst2 (cdddr intlst2))
)
) )
ptlst ;交点表本身即以x排序,
) <TABLE class=tableBorder1 cellSpacing=1 cellPadding=0 align=center>
<TBODY>
<TR>
<TD class=tablebody1 vAlign=center align=middle width=46></TD>
<TD class=tablebody1 vAlign=top width=*>
<TABLE cellSpacing=0 cellPadding=2 width="100%" border=0>
<TBODY>
<TR>
<TD class=TopLighNav1 width=* height=22><A name=604></A>多段线和其他线的交点改为多段线的顶点</TD></TR>
<TR>
<TD class=tablebody1 width=* height=20><PRE><FONT color=#800000>作者:</FONT><FONT color=#800000>龙龙仔</FONT></PRE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
漏了一函数:
<FONT color=#000080>;;(ADD_INTPT <POLYLINE线> <相交线>)<BR>;;(ADD_INTPT <POLYLINE线> <相交线>)<BR>
</FONT> 补充一个扩展数据相关函数;| (xxd-put e app) = entmod方式,给实体添加或更新或删除扩展数据.-----梁雄啸.2004.10.1
参数: e = 实体名.
app = '("注册名" 项1 项2 ...) ;用于添加或更新. 如(list "test" '(1070 . 1234)'(1003 . "0"))
'("注册名") ; 用于删除相关注册项的xdata.
nil ; 用于删除实体全部的xdata.
说明: 支持所有实体.非图形实体不支持viewport(必须用 vlax-ldata-put.或setxdata方法).
参考 entmod 帮助.
相关: 参照 ()函数=vla方式,支持所有的扩展数据修改.
实例: 1.增加(如已经有,则为更新)指定注册名的xdata:
(xxd-put (car(entsel)) (list "test" (cons 1070 1234)))
(xxd-put (car(entsel)) (list "test1" (cons 1070 4321)))
2.删除指定注册名的xdata:
(xxd-put (car(entsel)) '("test"))
(xxd-put (car(entsel)) '("test1"))
3.删除所有的扩展数据:
(xxd-put (setq e(car(entsel))) nil)
|;
(defun xxd-put (e app)
(if app (regapp (car app))) ;;无论是否已经有,均注册.有重复的话无不利影响.
(if app
(entmod (list (cons -1 e) (list -3 app))) ;;新建,更新,或删除指定app,{用 '("注册名") }.
(progn ;;删除所有的扩展数据.
(setq apps (mapcar 'car (cdr(assoc -3 (entget e '("*"))))))
(entmod (list (cons -1 e) (cons -3 (mapcar 'list apps))))
)
)
)
;|参考:删除xdata另外方法--by cy956@mjtd.
(defun c:delxdata()
(setq e(entsel)
en(entget (car e)))
(entmod en)
)
|; 感谢斑竹的辛勤劳动。 一定去学习学习 谢谢,收下了。 能有一个好的网站,能有一群乐于助人的高手,
cad_redeveloper's fortune