xyz2009xyz 发表于 2010-8-5 15:15:00

把单线转化为多线

把单线转化为多线,为什么不行,运行后显示,求教大虾

命令: DV
请输入转化后线宽(默认0.5mm):
选择对象: 指定对角点: 找到 2 个
选择对象:PEDIT 选择多段线或 [多条(M)]: 选择多段线或 [多条(M)]: M
选择对象: 选择多段线或 [多条(M)]:
输入选项
[闭合(C)/合并(J)/宽度(W)/编辑顶点(E)/拟合(F)/样条曲线(S)/非曲线化(D)/线型生成(L)
/放弃(U)]: WIDTH
指定所有线段的新宽度:
输入选项
[闭合(C)/合并(J)/宽度(W)/编辑顶点(E)/拟合(F)/样条曲线(S)/非曲线化(D)/线型生成(L)
/放弃(U)]: 0.500000000000000
无效的选项关键字。
; 错误: 函数被取消
[闭合(C)/合并(J)/宽度(W)/编辑顶点(E)/拟合(F)/样条曲线(S)/非曲线化(D)/线型生成(L)



;把单线转化为多线
(defun C:DV( / DD XK)
    (princ "\n请输入转化后线宽(默认0.5mm):")
    (SETQ XK (GETREAL))   
    (
      IF(= NIL XK)
      (SETQ XK 0.5)
    )
    (setq DD (ssget))
    (command "PEDIT" "" "M" "" DD "WIDTH" "" "XK" "" "")
    ;(command "PEDIT" "" "M" "" DD "WIDTH" "" XK "" "")也一样
    (princ)
)

xyz2009xyz 发表于 2010-8-5 15:28:00

用这一段代码也不行

;超级简化pedit命令
;看到这么多的朋友分享好东东我也下了一点来而不往非礼也!

;工作中要把几条直线或圆弧合并成多段线,用pedit时 要先选取一条直线,先转化为多段线 ,
;后再按“j” 继续添加 ,比较麻烦,编个程序简化该过程可以直接选择要转多段线的直线或圆
;弧就可以,省去麻烦 ,当选择集中有多段线时和没有多段线时是一样的。
;0.0005为串多段线的两线间距精度越大越好串,但也有一些其它问题我个人觉的这个值最佳
;我的邮箱为idfhm@tom.com知道吗?用tom邮箱的可是老网民
(defun c:j()
(prompt "\n idfhm@tom.com")
(setq idfhm (ssget))
(command "_pedit" "m" idfhm "" "" "join" "0.0005" "")
)

masterlong 发表于 2010-8-5 19:15:00

<p>选择到直线或圆弧的时候</p>
<p>会询问是否转换到多义线</p>
<p>要加一个"Y"</p>
<p>所以程序流程上要有一个 if 判断</p>
<p>以便区别对待</p>
<p>另外XK不需要双引号</p>

xyz2009xyz 发表于 2010-8-5 19:28:00

<p>可是使用PEDIT命令:pedit----&gt;回车----&gt;M----&gt;回车----&gt;框选对象------&gt;回车-----&gt;W-----&gt;回车----&gt;0.5----&gt;回车&nbsp;&nbsp;&nbsp; 即可把单线变为多线啊?</p>

masterlong 发表于 2010-8-5 22:18:00

<p>我用的是2004</p>
<p>其它版本没有</p>
<p>不知道是什么样的情况</p>
<p>你试过含L、ARC或者不含L、ARC的情况了吗?</p>
<p>&nbsp;</p>
<p>另外(command "PEDIT" "" "M" "" DD "WIDTH" "" "XK" "" "")</p>
<p>这一句有3个错误</p>
<p>1.M后面不需要再多一个"" ,"M"本身就代表输入M并回车</p>
<p>2.DD后面应该加一个 "" ,表示选择物体结束</p>
<p>3.创建DD选择集时应该加上过滤,含L、ARC和不含L、ARC的选择集,出现的提示是不同的</p>

AMTONNY 发表于 2010-8-5 23:59:00

<p>楼主看看这个行不?</p>

xyz2009xyz 发表于 2010-8-6 00:42:00

<p>可以谢谢6楼,呵呵,我看看自己的有什么问题!</p>

xyz2009xyz 发表于 2010-8-6 01:19:00

6楼的那个大哥,你的程序如果框选两个对象(一条圆弧与一条直线或者两条直线),好像每次也只能对一个有效!不知道能不能改改

yoyoho 发表于 2010-8-6 07:34:00

<p><font style="BACKGROUND-COLOR: #ffffff" face="Verdana">;;;把单线转化为多线<br/>;;;autocad 2008 测试 o.k.</font></p>
<p><font style="BACKGROUND-COLOR: #ffffff" face="Verdana">(defun C:DV( / DD XK)<br/>&nbsp;&nbsp;&nbsp; (princ "\n请输入转化后线宽(默认0.5mm):")<br/>&nbsp;&nbsp;&nbsp; (SETQ XK (GETREAL))<br/>&nbsp;&nbsp;&nbsp; (<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF(= NIL XK)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SETQ XK 0.5)<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (setq DD (ssget '((0 . "LINE,*POLYLINE,ARC"))))<br/>&nbsp;&nbsp;&nbsp; (command "PEDIT" "M" DD "" "W" XK "")<br/>&nbsp;&nbsp;&nbsp; ;(command "PEDIT" "" "M" "" DD "WIDTH" "" "XK" "" "")<br/>&nbsp;&nbsp;&nbsp; ;(command "PEDIT" "" "M" "" DD "WIDTH" "" XK "" "")也一样<br/>&nbsp;&nbsp;&nbsp; (princ)<br/>)<br/></font></p>

yoyoho 发表于 2010-8-6 07:56:00

<p><font style="BACKGROUND-COLOR: #ffffff" face="Verdana">;超级简化pedit命令<br/>;看到这么多的朋友分享好东东我也下了一点来而不往非礼也!</font></p>
<p><font style="BACKGROUND-COLOR: #ffffff" face="Verdana">;工作中要把几条直线或圆弧合并成多段线,用pedit时 要先选取一条直线,先转化为多段线 ,<br/>;后再按“j” 继续添加 ,比较麻烦,编个程序简化该过程可以直接选择要转多段线的直线或圆<br/>;弧就可以,省去麻烦 ,当选择集中有多段线时和没有多段线时是一样的。<br/>;0.0005为串多段线的两线间距精度越大越好串,但也有一些其它问题我个人觉的这个值最佳<br/>;我的邮箱为idfhm@tom.com知道吗?用tom邮箱的可是老网民<br/>;AUTOCAD 2008 测试 O.K.</font></p>
<p><font style="BACKGROUND-COLOR: #ffffff" face="Verdana">(defun c:j()<br/>(prompt "\n idfhm@tom.com")<br/>(setq idfhm (ssget))<br/>(command "_pedit" "m" idfhm "" "join" "0.0005" "")<br/>)</font></p>
页: [1] 2
查看完整版本: 把单线转化为多线