CAD设计论坛

 找回密码
 立即注册
论坛新手常用操作帮助系统等待验证的用户请看获取社区币方法的说明新注册会员必读(必修)
查看: 2463|回复: 2

[求助] 请教:如何画可带圆弧的双线?

[复制链接]
发表于 2010-12-12 12:57 | 显示全部楼层 |阅读模式
[测绘制图,画围墙时需要用双线,两条线的线型不同。要求是一路画过去,可以自由选择下一步是用直线还是圆弧。用mline的话就无法画圆弧了,我打算象下边这样用平行线来解决,但总觉得不满意:; i$ z/ b& x1 Q/ V& h7 n

' w9 ]  P3 L4 Y/ G/ h) E8 q(DEFUN C:test() $ A: h  b# K* D; T6 w
6 _. ~; ?- q6 I! y6 m
;指定第一条线的层和线型:
) T% q  C( |; k# U(setvar "clayer"  "wall")(setvar "celtype" "wq2012")1 R8 }2 c, X( Q% ?9 m& \+ y

/ y8 |( x0 e  T; v- V;输入宽度:
2 X! |9 _) C+ \+ I, J" q# D(setq th (getreal "输入墙厚度:(默认为0.5):"))
: {% X. r2 `6 X4 z! S+ z% u1 L  _7 g1 \8 W* Q8 s/ Q. T+ N
;先画一条边线:! r3 I; V) P$ P" @" g) }. n  T
(command "pline" )
  G  @) c# ]/ H* z% T2 Z0 h% ?& t, y3 C) z/ ~- `! f2 g/ l
;判断是否还处于pline中:- j! Q3 o/ H# i# F" K2 F
(while (= (getvar "CMDACTIVE") 1) (command pause))
1 G3 T9 |# e- l8 W* o- ]2 u
* J! ]) W" E( c8 T: j/ ];作平行线,如果前边th没有输入则默认为0.5:0 t( h0 H, J9 M1 B/ L  f* E2 E
(setq a (vlax-ename->vla-object (entlast)))5 [. x7 _7 L. q% m- j
(if (= nil th) (vla-offset a -0.5) (vla-offset a (- th)))
4 Q# d8 O3 p4 y( \) \$ Q1 l+ U7 Q3 B7 e# v9 u
;选择刚做好的平行线,然后更改线型:
, ^6 e6 @3 u3 j
! F' y- K0 G9 ?(setq b (entlast))0 i' w2 R9 R( t$ x( Q9 B
(command "chprop" b "" "lt" "continuous" "")
$ E- w, ^) ^5 V# O7 x: s+ Y" Q1 @/ l2 a! F  @
)6 r9 ^, ~' x. f1 F) S
/ ]  _& x9 a1 e6 T) Q  I
现在问题还有两个:第一是,我希望第一条线,就是用pline做的那条线是打散的,不知道做好了平行线之后,该如何回头去选择这条线;第二个问题是我如何封闭这两条平行线的头和尾呢?是否要调用lastpoint和lastangle这两个参数,但不知道如何去弄。小弟刚开始学lisp,纯属菜鸟,请大家帮帮忙。7 k8 H- }; B1 U* p' V) o
9 T& c  P$ U. s* s- S6 g
[ 本帖最后由 mandala 于 2010-12-12 13:04 编辑 ]
 楼主| 发表于 2010-12-12 13:02 | 显示全部楼层
如果不直接用(command "pline" ),而是设置输入点P1、P2后制作循环,用(command "pline"  p1 p2 )这种方式来画线,再用polar的确可以做到封闭头尾,但问题是这样做的话,无法在画线的过程中自由选择下一步是用直线还是圆弧。
发表于 2010-12-13 06:41 | 显示全部楼层
恩恩 这个也是初级问题  可我不会  加油啦兄弟
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于|免责|隐私|版权|广告|联系|手机版|CAD设计论坛

GMT+8, 2025-5-6 14:49

CAD设计论坛,为工程师增加动力。

© 2005-2025 askcad.com. All rights reserved.

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