明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1644|回复: 6

[基础] 等分问题,等分线都画在一起,问题出在哪??

[复制链接]
发表于 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)
 楼主| 发表于 2010-6-24 11:14: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)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2010-6-24 11:22:00 | 显示全部楼层

需要关闭osmode

把  (command "line" pta ptb "")替换为

 (command "line" "non" pta "non" ptb "")

 楼主| 发表于 2010-6-24 11:49:00 | 显示全部楼层

加了

 

(setq pz (getvar "osmode"))
(setvar "osmode" 0)

 

(command "line" "non" pta "non" ptb "")

 

 

(setvar "osmode" pz) ;

 

 

还是不行

好像是 pta ptb 变量没有变,变量的问题?

 楼主| 发表于 2010-6-24 12:02:00 | 显示全部楼层

(setq cdl (* cd i))     ;

 

好像是这出点问题,请教,

 

发表于 2010-6-24 12:33:00 | 显示全部楼层

(setq cd (/ (- py2 py1) n)) ;等分的长度

改成

(setq cd (/ (- px2 px1) n)) ;等分的长度

 楼主| 发表于 2010-6-24 13:59:00 | 显示全部楼层

 

没想到,会是这?出问题,

 

非常感谢

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-10-2 06:44 , Processed in 0.167178 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表