机械必威体育网址

用户名  找回密码
 注册会员

QQ登录

只需一步,快速开始

帖子
查看: 3084|回复: 7
打印 上一主题 下一主题

请教,怎样才能用autolisp在直线两端各加一个矩形?

[复制链接]
跳转到指定楼层
1#
发表于 2024-2-7 18:01:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人不会autolisp。请教,怎样才能用autolisp在直线两端各加一个矩形?比如在白色直线的两端各加一个1*5的矩形?
' T, g4 b/ Y; `! C) O0 E
& L; I2 G) G( C; P! h
7 a  y4 L2 G: ^4 a

本帖子中包含更多资源

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

x
回复

举报

2#
发表于 2024-2-8 00:13:47 | 只看该作者
你是直线先画出,再加矩形,还是画直线的同时,加上矩形,一次完成?

点评

先手动画出直线,然后运行程序提示选择哪一条直线,鼠标手动点击选择直线,然后机器自己画出矩形。  发表于 2024-2-8 11:13
回复 支持 反对

举报

3#
发表于 2024-2-8 18:15:14 | 只看该作者
我用VBA实现。
回复 支持 反对

举报

4#
发表于 2024-2-8 18:17:12 | 只看该作者

本帖子中包含更多资源

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

x
回复 支持 反对

举报

5#
发表于 2024-2-8 18:18:18 | 只看该作者
Sub creatEndRect()' A9 f9 C. M2 O* R! s& M& y7 E( `4 f
    5 D# z" u' o/ ^9 N2 \  n) \
    Dim line2 As AcadLine* w( E& o  c" W* f+ K* n
    ThisDrawing.Utility.GetEntity line2, basePnt, "Select an line:"8 Z; T0 ^% m: u% H& g3 E
    $ u0 o+ Q- L3 l) @
    Dim p14 x; M) O; @9 x% ~6 s* t$ B9 ?+ a
    p1 = line2.startPoint
2 t; ]/ d2 N" e, s+ b0 D    Dim p2
1 k; r8 i7 t$ c  h+ Q. ?    p2 = line2.endPoint
! {; n: ]+ `8 B, S8 E& j   
: y) o% ^" P# I$ X& U    Dim angle2 As Double
# g9 H, M1 X% a3 I    angle2 = line2.angle! ?8 A0 C3 j: |* {8 i) q5 m! A

. Z: b2 t$ a8 x$ J. S% e! }    Dim pts1(0 To 7) As Double
0 a% O; j; q! r0 C: a% ?) Q    Dim pts2(0 To 7) As Double& \& u* [+ w8 h& W
      
2 V, \0 ]4 c$ q; i4 q    pts1(0) = CDbl(p1(0)) + 0.5 * Sin(angle2): pts1(1) = CDbl(p1(1)) - 0.5 * Cos(angle2)
# l8 C* @& k) D) G    pts1(2) = pts1(0) + 5 * Cos(angle2): pts1(3) = pts1(1) + 5 * Sin(angle2)
! |% y6 o3 c# E& b/ Q0 O/ x2 T; N    pts1(4) = pts1(2) - 1 * Sin(angle2): pts1(5) = pts1(3) + 1 * Cos(angle2)
* ?( l# M2 g: x2 i    pts1(6) = pts1(4) - 5 * Cos(angle2): pts1(7) = pts1(5) - 5 * Sin(angle2)3 i, v5 D- o# T! [! j8 [
   
* i( \4 e) w+ V* z! k    pts2(0) = CDbl(p2(0)) + 0.5 * Sin(angle2): pts2(1) = CDbl(p2(1)) - 0.5 * Cos(angle2)  ]' s$ T! V/ g  r8 O" m7 M3 p
    pts2(2) = pts2(0) - 5 * Cos(angle2): pts2(3) = pts2(1) - 5 * Sin(angle2)
0 B9 c2 I: a, V1 f* [    pts2(4) = pts2(2) - 1 * Sin(angle2): pts2(5) = pts2(3) + 1 * Cos(angle2)9 a) b4 t0 a8 b
    pts2(6) = pts2(4) + 5 * Cos(angle2): pts2(7) = pts2(5) + 5 * Sin(angle2)
+ O/ W5 L% l) L! }3 P    ; {4 Y/ z  W$ `! M
    Dim pl0 As AcadLWPolyline/ \/ N5 Q4 ^& m$ R/ B% K$ o" G7 `
    Set pl0 = ThisDrawing.ModelSpace.AddLightWeightPolyline(pts1)) z5 a7 u4 V3 g$ `% u% t6 W5 A& H
    Dim pl1 As AcadLWPolyline& u6 m' ^& Z6 W% w) R6 \! e
    Set pl1 = ThisDrawing.ModelSpace.AddLightWeightPolyline(pts2). S5 p' T/ y( W$ |
. G- S3 e3 n0 C( R$ V/ r
    pl0.Closed = True
. J# l) [. G% B    pl1.Closed = True
( {2 p, x0 _! T$ j5 e) d: l; L/ E6 @3 D! i1 b, c/ w9 s& ?
End Sub

点评

这个管用,谢谢你哦!  发表于 2024-2-11 19:48
回复 支持 反对

举报

6#
发表于 2024-2-12 08:21:21 | 只看该作者
不客气!管用就好!
回复 支持 反对

举报

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

本版积分规则

小黑屋|手机版|Archiver|机械必威体育网址 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2025-3-27 05:54 , Processed in 0.077758 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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