机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 3101|回复: 7

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

[复制链接]
发表于 2024-2-7 18:01:20 | 显示全部楼层 |阅读模式
本人不会autolisp。请教,怎样才能用autolisp在直线两端各加一个矩形?比如在白色直线的两端各加一个1*5的矩形?1 V* ?* z, l: k# k& I+ S

/ e( g3 L8 b# [7 _/ Y5 |: Q$ n/ u( \& Y- ~% B/ j

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2024-2-8 00:13:47 | 显示全部楼层
你是直线先画出,再加矩形,还是画直线的同时,加上矩形,一次完成?

点评

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

使用道具 举报

发表于 2024-2-8 18:15:14 | 显示全部楼层
我用VBA实现。
回复 支持 反对

使用道具 举报

发表于 2024-2-8 18:17:12 | 显示全部楼层

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 2024-2-8 18:18:18 | 显示全部楼层
Sub creatEndRect()
; R# k6 t9 E7 U2 I9 L    2 y" g& o+ e) N6 I- O# ]
    Dim line2 As AcadLine
4 p3 @8 m. \, Y# \) G. h    ThisDrawing.Utility.GetEntity line2, basePnt, "Select an line:"
/ J2 P  x; C3 D+ R# z4 o4 y) T    7 i# x6 ]- b6 c! ]- h, y8 D$ _
    Dim p1  ?/ Z0 k$ |' V  d: ~7 }! p
    p1 = line2.startPoint1 C7 g8 b( D, v1 S/ |- |" k
    Dim p2
. L: ]$ i1 V' e5 q: \    p2 = line2.endPoint
9 A: q2 G" Z, |- o9 s0 V   
9 a2 D+ U. k, x    Dim angle2 As Double& x1 H$ @6 I  f6 N
    angle2 = line2.angle0 z& r: O# d2 a" |

) {1 {' N5 t3 x7 ^( I    Dim pts1(0 To 7) As Double
! S, _- ]8 d, K6 H5 Z    Dim pts2(0 To 7) As Double& q4 C; Q& P$ y: e" B4 X" n! n
      : I4 a7 y4 o; {+ u) @
    pts1(0) = CDbl(p1(0)) + 0.5 * Sin(angle2): pts1(1) = CDbl(p1(1)) - 0.5 * Cos(angle2)
4 r0 a3 D( E' t    pts1(2) = pts1(0) + 5 * Cos(angle2): pts1(3) = pts1(1) + 5 * Sin(angle2)9 N6 l, A( f- H2 O  F
    pts1(4) = pts1(2) - 1 * Sin(angle2): pts1(5) = pts1(3) + 1 * Cos(angle2)
& g* q2 l7 D, J0 ~: J* l    pts1(6) = pts1(4) - 5 * Cos(angle2): pts1(7) = pts1(5) - 5 * Sin(angle2)% E7 A/ v- y+ q% j, U! J; F  `  _
   
6 s4 C& j0 H5 [    pts2(0) = CDbl(p2(0)) + 0.5 * Sin(angle2): pts2(1) = CDbl(p2(1)) - 0.5 * Cos(angle2)6 h; u  R. g9 u6 |9 o6 H
    pts2(2) = pts2(0) - 5 * Cos(angle2): pts2(3) = pts2(1) - 5 * Sin(angle2)
5 F" a7 S8 K' P% ~    pts2(4) = pts2(2) - 1 * Sin(angle2): pts2(5) = pts2(3) + 1 * Cos(angle2)
: y! L$ W& A% ]    pts2(6) = pts2(4) + 5 * Cos(angle2): pts2(7) = pts2(5) + 5 * Sin(angle2)
: C5 S5 g; Y4 Y    6 }# T) h$ B8 Y- G
    Dim pl0 As AcadLWPolyline
& }% A" {4 K+ v. G2 F/ s( r    Set pl0 = ThisDrawing.ModelSpace.AddLightWeightPolyline(pts1). C+ F  Z1 m' `& w3 ^2 ~
    Dim pl1 As AcadLWPolyline
) B. [; O9 ~  A    Set pl1 = ThisDrawing.ModelSpace.AddLightWeightPolyline(pts2)
4 U+ s+ X) D9 U. V8 x- ~2 d1 k( Q/ U  ~
    pl0.Closed = True' X0 k* \) [+ X: u
    pl1.Closed = True1 `8 `0 Q! w  [/ t" J# y" s

5 j+ g2 D0 J5 o; o& o4 mEnd Sub

点评

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

使用道具 举报

发表于 2024-2-12 08:21:21 | 显示全部楼层
不客气!管用就好!
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2025-4-12 12:07 , Processed in 0.065957 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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