明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 世人皆醉

[提问] 如何在直线两段生成小点点

[复制链接]
 楼主| 发表于 2022-8-5 16:21 | 显示全部楼层
mituzhe 发表于 2022-8-5 15:28
其实如果只是想要标记顶点位置。可以单独画 点(POINT)图元,可以标记出所有顶点。目前我这个代码,对多段 ...

大佬,你这个打点是往外打的,朝向反了
只能选择一个对象,不能多选
没有删除原来的线,
回复

使用道具 举报

发表于 2022-8-5 16:23 | 显示全部楼层
仅仅适合普通直线的情况,复杂情况不做考虑
(defun c:NM (/ dxf en i p1 p2 p3 p4 s1 ss)
        (defun dxf (ent i) (cdr (assoc i (entget ent))))
  (setq i -1)
  (if (setq ss (ssget ":S"(list '(0 . "LINE"))))
    (while (and(setq en (ssname ss (setq i (1+ i)))))               
                        (setq p1(dxf en 10)
                                p2(dxf en 11)
                                p3(polar p1(angle p1 p2)1)
                                p4(polar p2(angle p2 p1)1)
                        )
                        (entmake (list '(0 . "LINE") (cons 10 p1) (cons 11 p3)))
                        (vla-put-color (vlax-ename->vla-object (entlast)) 2)
                        (entmake (list '(0 . "LINE") (cons 10 p2) (cons 11 p4)))
                        (vla-put-color (vlax-ename->vla-object (entlast)) 2)
                        (entdel en)      
                )
  )
        (princ)
)
回复

使用道具 举报

发表于 2022-8-5 16:36 | 显示全部楼层
本帖最后由 mituzhe 于 2022-8-5 16:40 编辑
世人皆醉 发表于 2022-8-5 16:21
大佬,你这个打点是往外打的,朝向反了
只能选择一个对象,不能多选
没有删除原来的线,

我编辑了回答的,能删除原直线,也能多选,只是“:S”关键字,是不用右键确定的选择。我现在改了方向,删除了“:S”关键字,需要右键确认,方便多次选择。
回复

使用道具 举报

发表于 2022-8-5 16:40 | 显示全部楼层
本帖最后由 llsheng_73 于 2022-8-5 17:26 编辑
世人皆醉 发表于 2022-8-5 13:54
就是个一毫米的线,对的,就是起点是直线的端点,指点是指向另一端

  1. (defun c:tt(/ s p1 p2 d la)
  2.   (or(setq d(getreal"短线长度[0.001]"))(setq d 0.001))
  3.   (prompt"选择直线")
  4.   (if(setq s(ssget'((0 . "line"))))
  5.     (while(setq e(ssname s 0))
  6.       (setq p1(vlax-curve-getstartpoint e)
  7.             p2(vlax-curve-getendpoint e)
  8.             la(cdr(assoc 8(entget e))))
  9.       (entmakex(mapcar'cons'(0 8 62 10 11)(list"line"la 2 p1(polar p1(angle p1 p2)d))))
  10.       (entmakex(mapcar'cons'(0 8 62 10 11)(list"line"la 2 p2(polar p2(angle p2 p1)d))))
  11.       (ssdel e s)(entdel e))))

  12. (defun c:tt(/ s p d la)
  13.   (or(setq d(getreal"短线长度[0.001]"))(setq d 0.001))
  14.   (prompt"选择直线")
  15.   (while(setq s(ssget'((0 . "line"))))
  16.     (while(setq e(ssname s 0))
  17.       (setq en(entget e)la(assoc 8 en)
  18.             p(vl-remove'nil(mapcar'(lambda(x)(if(member(car x)'(10 11))(cdr x)))en)))
  19.       (entdel e)
  20.       (ssdel e s)
  21.       (vl-every'(lambda(a)
  22.                   (entmakex(mapcar'cons'(0 8 62 10 11)(List"line"la 2(car a)(polar(car a)(apply'angle a)d)))))
  23.                (list p(reverse p))))))


本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
世人皆醉 + 1

查看全部评分

回复

使用道具 举报

发表于 2022-8-5 16:47 | 显示全部楼层

大佬这个简洁,学习了
回复

使用道具 举报

 楼主| 发表于 2022-8-5 16:49 | 显示全部楼层
mituzhe 发表于 2022-8-5 16:36
我编辑了回答的,能删除原直线,也能多选,只是“:S”关键字,是不用右键确定的选择。我现在改了方向,删 ...

大佬,你这个删除原直线只是删掉一条,并没有删完啊,比如我选择了5个,5个是都打点了,但是只删了一个原来的直线
回复

使用道具 举报

发表于 2022-8-5 16:52 | 显示全部楼层
世人皆醉 发表于 2022-8-5 16:49
大佬,你这个删除原直线只是删掉一条,并没有删完啊,比如我选择了5个,5个是都打点了,但是只删了一个原 ...

我这都删了的。我可以给你截动态图。不过你用楼上大佬的吧,比我的简洁很多
回复

使用道具 举报

 楼主| 发表于 2022-8-5 17:20 | 显示全部楼层

大佬,你这个没有删直线,而且打点不是黄色啊
回复

使用道具 举报

发表于 2022-8-5 17:26 | 显示全部楼层
mituzhe 发表于 2022-8-5 10:49
重新复制了一遍代码,顺便了解了怎么添加代码区域,哈哈

惶恐惶恐,其实 llsheng_73 大佬的更简洁。我掌握的函数少一点,显的有些啰嗦了。
回复

使用道具 举报

发表于 2022-8-5 17:28 | 显示全部楼层
世人皆醉 发表于 2022-8-5 17:20
大佬,你这个没有删直线,而且打点不是黄色啊

你可能复制的最先发的,最开始确实没注意黄色和删除原来的直线

评分

参与人数 1明经币 +1 收起 理由
世人皆醉 + 1

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 05:19 , Processed in 0.834418 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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