明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1176|回复: 1

[求助]菜鸟问题 很简单的循环程序出错了求大虾指路

[复制链接]
发表于 2011-1-28 11:06 | 显示全部楼层 |阅读模式
我的目的:已知在CAD中任意一个闭合四边形的面积,现在需要手动输入一个面积,选择某一条边令其平移 使得这个图形的面积为输入的面积 (输入面积不可与已知面积相差太大)
自己写了个源码,发现2个问题,1:无法跳出循环  ;;;2:若安ESC取消,所得到的图形面积与输入面积一样(不解中....)
还请哪位大虾不吝赐教
(defun c:mj()
(setvar "CMDECHO" 0) (setvar "osmode" 0)
  (setq pl (entsel))
  (setq ent (car pl))
  (command "._area" "_O" ent)
  (setq area0 (getvar "area"))
  (setq areaend (getreal "输入最终面积(当前比例尺):"))
  (command "_.explode" ent)
  (setq  line0 (car(entsel"请选择你想偏移的边线:")) b (entget line0) dist (distance (cdr(assoc 10 b)) (cdr(assoc 11 b))))
  (setq wid (abs(/ (- areaend area0) dist 2)))
  (setq line0ename (vlax-ename->vla-object line0))
  (vla-offset line0ename 0.0001)
  (setq l1 (entlast)) ;;;取得L1为平移后的线段
  (setq m1 (mapcar '(lambda (x y) (/ (+ x y) 2.0)) (vlax-curve-getEndPoint l1) (vlax-curve-getstartPoint l1))) ;;m1为l1的中点
  (entdel line0)
  (setq list (ssget "p"))
  (command "pedit" "m" list l1 "" "y" "j" 0.0002 "") ;;将平移后的多边形闭合
  (setq ent1 (entlast))
  (command "._area" "_O" ent1)
  (setq area1 (getvar "area")) ;;;取得area1为第一次平移后的面积
(while (> (abs (- area0 areaend)) 0.001)
  (command "._explode" ent1)
  (setq list (ssget "p"))
  (if (and (< area0  areaend) (> area0 area1)) (setq wid (* wid -1)))
  (if (and (> area0  areaend) (< area0 area1)) (setq wid (* wid -1)))
  (setq l (car(nentselp m1)))  ;;取得l 为 需要平移的线
  (setq lename (vlax-ename->vla-object l))
  (vla-offset lename wid) ;;;;;;;平移      
  (setq lm (entlast))
  (setq m1 (mapcar '(lambda (x y) (/ (+ x y) 2.0)) (vlax-curve-getEndPoint lm) (vlax-curve-getstartPoint lm))) ;;;m1为平移后线段的中点
  (setq dist (distance (cdr(assoc 10 (entget lm))) (cdr(assoc 11 (entget lm))))) ;;;;求出lm的长度
  (entdel  l) ;;;删除l
  (command "pedit" "m" list lm "" "y" "j" (abs(* 2 wid ))"") ;;;;闭合
  (setq ent1 (entlast))  
  (command "._area" "_O" ent1)
  (setq area1 (getvar "area")) ;;;;取得闭合后图形面积为area1
  (setq wid (/ (- areaend area1) dist 2)) ;;;;取得下次需要平移的距离
)
)

发表于 2011-1-28 11:14 | 显示全部楼层
可以试试将矩形删掉重新画
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-17 16:57 , Processed in 0.183187 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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