bearbear1 发表于 2010-6-24 11:13:00

等分问题,等分线都画在一起,问题出在哪??

(defun c:aa( )

(setvar "cmdecho" 0) ;指令執行過程不回應

(setq en (entsel "Select a LINE:")) ;要求碰選一條線

(setq en_data (entget (car en)))    ;取得元體資料串列

;******************** 求得 pt1 & px1、py1 *********************

(setq pts (assoc 10 en_data)) ;取得群碼10的子串列

(setq pt1 (cdr pts)) ;取得起點pt1座標

(setq px1 (car pt1)) ;取得pt1座標的x值

(setq py1 (cadr pt1)) ;取得pt1座標的y值

;******************** 求得 pt2 & px2、py2 ***********************

(setq pte (assoc 11 en_data)) ;取得群碼11的子串列

(setq pt2 (cdr pte)) ;取得終點pt2座標

(setq px2 (car pt2)) ;取得pt2座標的x值

(setq py2 (cadr pt2)) ;取得pt2座標的y值

;******************** 求得 等分线 两点 pta ptb ***********************
;??????????????出现问题 等分线画在一起???????
(setq n (getreal "上亮等分几等分"))
(setq cd (/ (- py2 py1) n)) ;等分的长度
(setq i 1)
        (while (< i n)
        (progn
                (setq cdl (* cd i))   ;
                (setq pta (mapcar '+ pt1 (list cdl 0)))
                (setq ptb (mapcar '+ pt1 (list cdl 1000)))
                (command "line" pta ptb "")
                )
        (setq i (+ i 1))
        )


(prin1)

)

(prompt "*************** <<等分 C:aa >> *****************")

(prin1)

bearbear1 发表于 2010-6-24 11:14:00

<p><font face="Verdana">(defun c:aa( )</font></p>
<p><font face="Verdana">(setvar "cmdecho" 0) ;指令執行過程不回應</font></p>
<p><font face="Verdana">(setq en (entsel "Select a LINE:")) ;要求碰選一條線</font></p>
<p><font face="Verdana">(setq en_data (entget (car en)))&nbsp;&nbsp;&nbsp; ;取得元體資料串列</font></p>
<p><font face="Verdana">;******************** 求得 pt1 &amp; px1、py1 *********************</font></p>
<p><font face="Verdana">(setq pts (assoc 10 en_data)) ;取得群碼10的子串列</font></p>
<p><font face="Verdana">(setq pt1 (cdr pts)) ;取得起點pt1座標</font></p>
<p><font face="Verdana">(setq px1 (car pt1)) ;取得pt1座標的x值</font></p>
<p><font face="Verdana">(setq py1 (cadr pt1)) ;取得pt1座標的y值</font></p>
<p><font face="Verdana">;******************** 求得 pt2 &amp; px2、py2 ***********************</font></p>
<p><font face="Verdana">(setq pte (assoc 11 en_data)) ;取得群碼11的子串列</font></p>
<p><font face="Verdana">(setq pt2 (cdr pte)) ;取得終點pt2座標</font></p>
<p><font face="Verdana">(setq px2 (car pt2)) ;取得pt2座標的x值</font></p>
<p><font face="Verdana">(setq py2 (cadr pt2)) ;取得pt2座標的y值</font></p>
<p><font face="Verdana">;******************** 求得 等分线 两点 pta ptb ***********************<br/>;??????????????出现问题 等分线画在一起???????<br/>(setq n (getreal "上亮等分几等分"))<br/>(setq cd (/ (- py2 py1) n)) ;等分的长度<br/>(setq i 1)<br/>&nbsp;(while (&lt; i n)<br/>&nbsp;(progn<br/>&nbsp;&nbsp;(setq cdl (* cd i))&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>&nbsp;&nbsp;(setq pta (mapcar '+ pt1 (list cdl 0)))<br/>&nbsp;&nbsp;(setq ptb (mapcar '+ pt1 (list cdl 1000)))<br/>&nbsp;&nbsp;(command "line" pta ptb "")<br/>&nbsp;&nbsp;)<br/>&nbsp;(setq i (+ i 1))<br/>&nbsp;)</font></p><font face="Verdana">
<p><br/>(prin1)</p>
<p>)</p>
<p>(prompt "*************** &lt;&lt;等分 C:aa &gt;&gt; *****************")</p>
<p>(prin1)<br/></font></p>

caoyin 发表于 2010-6-24 11:22:00

<p>需要关闭osmode</p>
<p>把 &nbsp;(command "line" pta ptb "")替换为</p>
<p>&nbsp;(command "line" "non" pta "non" ptb "")<br/><br/></p>

bearbear1 发表于 2010-6-24 11:49:00

<p><font face="Verdana">加了</font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">(setq pz (getvar "osmode"))<br/>(setvar "osmode" 0)</font></p>
<p>&nbsp;</p>
<p><font face="Verdana">(command "line" "non" pta "non" ptb "")</font></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><font face="Verdana">(setvar "osmode" pz) ;</font></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><font face="Verdana">还是不行</font></p>
<p>好像是 pta ptb 变量没有变,变量的问题?</p>

bearbear1 发表于 2010-6-24 12:02:00

<p>(setq cdl (* cd i))&nbsp;&nbsp;&nbsp;&nbsp; ;<br/></p>
<p>&nbsp;</p>
<p>好像是这出点问题,请教,</p>
<p>&nbsp;</p>

sailorcwx 发表于 2010-6-24 12:33:00

<p><font face="Verdana">把</font></p>
<p><font face="Verdana">(setq cd (/ (- py2 py1) n)) ;等分的长度</font></p>
<p>改成</p>
<p><font face="Verdana">(setq cd (/ (- px2 px1) n)) ;等分的长度</font></p>

bearbear1 发表于 2010-6-24 13:59:00

<p></p>
<p>&nbsp;</p>
<p>没想到,会是这?出问题,</p>
<p>&nbsp;</p>
<p>非常感谢</p>
页: [1]
查看完整版本: 等分问题,等分线都画在一起,问题出在哪??