乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 78|回复: 8

[编程交流] 多行

[复制链接]

33

主题

96

帖子

65

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
170
发表于 2022-7-6 07:07:14 | 显示全部楼层 |阅读模式
有人能帮我吗。如果我使用ssget选择多行。如何让它知道哪一行是选择的第一行和最后一行?有Lisp程序的人已经在这样做了吗?我有检测点的代码,只需要知道确定第一个和最后一个的代码。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 07:19:42 | 显示全部楼层
例如
 
  1. (if (setq ss (ssget '((0 . "LINE"))))
  2. (progn
  3.    (setq first-line (ssname ss 0))
  4.    (setq last-line (ssname ss (1- (sslength ss))))
  5.    )
  6. )
回复

使用道具 举报

33

主题

96

帖子

65

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
170
发表于 2022-7-6 07:29:14 | 显示全部楼层
谢谢塔瓦。这是我要求的,但似乎我没有我想的那么好。我找不到第一条线的中点。你能给我一个建议或帮助吗。以下是我试图做的。
 
  1. (defun c:matt (/)
  2. (setq ss (ssget "_:L" '((0 . "LINE"))))
  3. (setq first-line (ssname ss 0))
  4. (setq last-line (ssname ss (1- (sslength ss))))
  5. (command "select" last-line "")
  6. (setq ed (entget en))
  7.            (setq p10 (cdr (assoc 10 ed)))
  8.            (setq p11 (cdr (assoc 11 ed)))
  9.            (setq mpt (mapcar '(lambda (a b) (* (+ a b) 0.5)) p10 p11))
  10.            (setq d2d (distance (cdr (reverse p10)) (cdr (reverse p11))))
  11.            (setq d1d (/ d2d 12.))
  12. (command "_dimlinear" last-line "-mid")
  13. )
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 07:36:48 | 显示全部楼层
 
不客气。。
 
看看这个。。。
 
  1. (if (setq ss (ssget '((0 . "LINE"))))
  2. (progn
  3.    (setq first-line (ssname ss 0))
  4.    (setq mid-point (mapcar '(lambda (q p) (/ (+ q p) 2.))
  5.                            (cdr (assoc 10 (entget first-line)))
  6.                            (cdr (assoc 11 (entget first-line)))
  7.                    )
  8.    )
  9. )
  10. )
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-6 07:40:33 | 显示全部楼层
抱歉打扰了,但是(ssname(ssget“_X”)0等同于(entlast),因此如果您想要上次创建的对象,可以使用索引0,如果您想要首次使用:((sslength(ssget))1)作为ssname函数中的索引。。。
 
M、 R。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:48:50 | 显示全部楼层
 
如果您在一个选择中的一组行上打开窗口,您将什么分类为选择中的“第一个”和“最后一个”?
离窗户边缘最近的那条线?
x/y/z坐标最低/最高的线?
在数据库中按顺序排列的行?
 
当使用选择模式字符串而不是扫描整个数据库(“U X”模式)时,不能依赖选择集中图元的顺序-“U X”模式将按图元在图形数据库中的显示顺序检索图元,即按图元在图形中的创建顺序。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 07:58:09 | 显示全部楼层
关于数据库顺序的回答很好,还记得最后一个实际上是第一个,非常确定选择集是通过将实体推到列表中来创建的,所以有时需要使用反向选项来获得列表中的实际数字0(是0不是1),这样有时就更容易不必向后思考。
回复

使用道具 举报

33

主题

96

帖子

65

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
170
发表于 2022-7-6 08:04:58 | 显示全部楼层
这是一个很好的观点,李,但现在不管谁是第一个或最后一个。很高兴知道我是否需要设置某些行。你们中有谁知道在lisp中读一篇关于改变维度的文章吗。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 08:12:50 | 显示全部楼层
J_spawn_h可能最好开始一个新的线程,并详细阐述有关暗淡的东西,这是你行问题的一部分吗?自动标注尺寸?如果发布dwg,则图像中的尺寸仅通过拾取两个点来完成。
 
080714erubkc0orkuyrpwr.jpg
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-10 14:55 , Processed in 0.738778 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表