明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 662|回复: 9

[图元] 如何绘制带弧段的多段线?

[复制链接]
发表于 2022-12-19 08:53 | 显示全部楼层 |阅读模式
求教大佬们,弧形多段线该如何绘制?
发表于 2022-12-23 09:15 | 显示全部楼层
vitalgg 发表于 2022-12-19 09:32
安装 @lisp 自动加载上面的函数定义

总能看到这种2B

点评

有不同意见可以说,请注意你的素质。  发表于 2022-12-23 11:40
回复 支持 0 反对 1

使用道具 举报

发表于 2022-12-19 09:32 | 显示全部楼层
本帖最后由 vitalgg 于 2022-12-23 11:38 编辑


  1. Sub makeArcLwpl()
  2.    
  3.     Dim plineObj As AcadLWPolyline
  4.     Dim points(0 To 3) As Double
  5.    
  6.     points(0) = 1: points(1) = 1
  7.     points(2) = 1: points(3) = 2
  8.          
  9.     Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)
  10.    
  11.     plineObj.SetBulge 0, -0.5
  12.     plineObj.Update
  13.    
  14. End Sub



  1. (defun entity:make-lwpline-bold (plist convexity elevation closed bold / lst-dxf i)
  2.   "生成固定宽度的二维多段线.LWPOLYLINE
  3. 参数:
  4.    plist:端点坐标点表,如:((x1 y1 z1)(x2 y2 z2)(x2 y2 z2))或((x1 y1)(x2 y2)(x2 y2))
  5.    convexity:各点与下一点的凸度(个数同坐标点表),可为nil
  6.   elevation:标高
  7.   closed:是否闭合,1:闭合,0:不闭合"
  8.   "返回值: 生成的多段线的图元名"
  9.   (setq lst-dxf
  10.         (list (quote (0 . "LWPOLYLINE"))
  11.               (quote (100 . "AcDbEntity"))
  12.               (quote (62 . 1))
  13.               (quote (370 . 30))
  14.               (quote (100 . "AcDbPolyline"))
  15.               (cons 90 (length plist))
  16.               (if (= closed 1)
  17.                   (quote (70 . 1))
  18.                 (quote (70 . 0)))
  19.               (cons 43 bold)
  20.               (quote (38 . 0.0))
  21.               (quote (39 . 0.0))))
  22.   (setq i 0)
  23.   (foreach
  24.    x plist
  25.    (setq lst-dxf
  26.          (append lst-dxf
  27.                  (list (cons 10 x)
  28.                        (cons 40 bold)
  29.                        (cons 41 bold)
  30.                        (cons 42 (if (null convexity)
  31.                                     0 (nth i convexity)))
  32.                        (cons 91 0))))
  33.    (setq i (1+ i)))
  34.   (entmake lst-dxf)
  35.   (entlast))


安装 @lisp 自动加载上面的函数定义



在坐标 0,0 到 1,1 处 绘制一段弧形多段线。
  1. (entity:make-lwpline-bold  '((0 0 0)(1 1 0)) '(0.5 0 ) nil 0 0)




本帖子中包含更多资源

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

x

点评

net区非要发lisp,觉得自己很会?  发表于 2022-12-23 11:46
回复 支持 0 反对 1

使用道具 举报

发表于 2022-12-19 09:36 | 显示全部楼层
vitalgg 发表于 2022-12-19 09:32
在坐标 0,0 到 1,1 处 绘制一段弧形多段线。

感谢大佬分享,学习下载~
发表于 2022-12-19 10:12 | 显示全部楼层
本帖最后由 vitalgg 于 2022-12-19 10:13 编辑

  1. (entity:make-lwpolyline '((0 0) (2 2)) '(0.3 0) '((0.5 1.0)(0 0)) 0 nil)


重新写了一个函数,可以定义不同段的凸度和起止宽度

https://atlisp.cn/function/entity:make-lwpolyline


本帖子中包含更多资源

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

x
发表于 2022-12-19 17:57 | 显示全部楼层
czb203 发表于 2022-12-19 09:36
感谢大佬分享,学习下载~

重新写了一个函数,可以定义不同段的凸度和起止宽度

https://atlisp.cn/function/entity:make-lwpolyline

见样式见上楼
发表于 2022-12-20 09:02 | 显示全部楼层
Polyline pl = new Polyline();
pl.AddVertexAt(0, new Point2d(1, 0), 1, 0, 0);
pl.AddVertexAt(1, new Point2d(-1, 0), 1, 0, 0);

c#是这样的,

这个代码就会生成一个圆形 的多段线

本帖子中包含更多资源

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

x
发表于 2022-12-20 15:39 | 显示全部楼层
轮回 发表于 2022-12-20 09:02
Polyline pl = new Polyline();
pl.AddVertexAt(0, new Point2d(1, 0), 1, 0, 0);
pl.AddVertexAt(1, new ...

请问VBA格式怎么写
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-28 20:03 , Processed in 0.301237 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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