乐筑天下

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

[编程交流] 如何获得第一个和第二个ve

[复制链接]

27

主题

72

帖子

45

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-5 20:55:08 | 显示全部楼层 |阅读模式
我喜欢在选定多段线的第一个顶点和第二个顶点之间编写文本。
请帮助我获取多段线的第一个顶点(p1)和第二个顶点(p2)。剩下的事我自己可以做。
 
提前感谢
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-5 21:07:47 | 显示全部楼层
考虑vlax Curve GetStartPoint和vlax Curve GetPointAtParam函数。
 
干杯
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 21:09:32 | 显示全部楼层
这里是第1个和第2个的另一个示例,只需使用(getcoords)并查看前4个值。
 
  1. ; pline co-ords by BIG AL
  2. (defun plcords (/ ent obj plobs )
  3. (vl-load-com)
  4. (defun getcoords (ent)
  5. (vlax-safearray->list
  6.    (vlax-variant-value
  7.      (vlax-get-property
  8.    (vlax-ename->vla-object ent)
  9.    "Coordinates"
  10.      )
  11.    )
  12. )
  13. )
  14. (defun co-ords2xy ( / I)
  15. ; convert now to a list of xy as co-ords are x y x y x y if 3d x y z x y z
  16. (setq numb (/ (length co-ords) 2))
  17. (setq I 0)
  18. (repeat numb
  19. (setq xy (list (nth (+ I 1) co-ords)(nth I co-ords) ))
  20. (setq coordsxy (cons xy coordsxy))
  21. (setq I (+ I 2))
  22. ) ; end repeat
  23. )
  24. (setq plobjs (ssget (list (cons 0 "lwpolyline"))))
  25. (setq numb1 (sslength plobjs))
  26. (setq x numb1)
  27. (repeat numb1
  28. (setq obj (ssname plobjs (setq x (- x 1))))
  29. (setq co-ords (getcoords obj))
  30. )
  31. (co-ords2xy)
  32. (setq inc (length coordsxy))
  33. (repeat (/ inc  2)
  34. (setq x (rtos (nth (setq inc (- inc 1)) co-ords) 2 3 ))
  35. (setq y (rtos (nth (setq inc (- inc 1)) co-ords) 2 3 ))  
  36. (setq xy (strcat x "," y ))
  37. (princ xy)
  38. (princ "\n ")
  39. )
  40. )
  41. (plcords)
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 21:19:03 | 显示全部楼层
试试这个。
 
  1. (if (and (setq s (car (entsel "\n Select Polyline :")))
  2.         (eq (cdr (assoc 0 (setq e (entget s)))) "LWPOLYLINE")
  3.    )
  4. (progn
  5.    (setq d (distance (setq 1p (cdr (car (setq l
  6.                                                (vl-remove-if-not '(lambda (u) (eq (car u) 10)) e)
  7.                                         )
  8.                                    )
  9.                               )
  10.                      )
  11.                      (setq 2p (cdr (cadr l)))
  12.            )
  13.          a (angle 1p 2p)
  14.    )
  15.    (command "text"
  16.             "mc"
  17.             (mapcar '(lambda (q p) (* (+ q p) 0.5)) 1p 2p)
  18.             0.2
  19.             (/ (* a 180) pi)
  20.             (strcat (rtos d 2 2) "/BT/RD")
  21.    )
  22. )
  23. )
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 21:23:40 | 显示全部楼层
 
不客气
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 21:30:41 | 显示全部楼层
 
这是否意味着要从多段线获得两个偏移?我不清楚,请提供更多信息。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 21:38:02 | 显示全部楼层
 
最好给出一个示例图或一个图像来一次性编写代码。
注:我不会在例程中包括李的例程,只要一个双偏移量就足够了。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 21:43:51 | 显示全部楼层
这里面有什么?
 
  1. (defun c:Test (/ s en e sn l ly o dz d a 1p 2p)
  2. ;;        Tharwat 08.12.2014        ;;
  3. (princ "\n Select Polyline :")
  4. (if (and (setq en (entlast)
  5.                 s  (ssget "_+.:S:E:L" '((0 . "LWPOLYLINE")))
  6.           )
  7.           (setq dz (getvar 'DIMZIN))
  8.           (setvar 'DIMZIN 0)
  9.           (setq *offDist*
  10.                  (cond ((getdist (strcat "\n Specify offset distance <"
  11.                                          (rtos (if *offDist*
  12.                                                  *offDist*
  13.                                                  (setq *offDist* 1.0)
  14.                                                )
  15.                                                2
  16.                                                2
  17.                                          )
  18.                                          " > :"
  19.                                  )
  20.                         )
  21.                        )
  22.                        (*offDist*)
  23.                  )
  24.           )
  25.           (progn
  26.             (initget 6 "Current Source")
  27.             (setq ly
  28.                    (cond
  29.                      ((getkword
  30.                         "\n Enter layer option for offset objects [Current/Source] <Source>: "
  31.                       )
  32.                      )
  33.                      ("Source")
  34.                    )
  35.             )
  36.           )
  37.      )
  38.    (progn
  39.      (setq d (distance (setq 1p (cdr (car (setq l
  40.                                                  (vl-remove-if-not
  41.                                                    '(lambda (u) (eq (car u) 10))
  42.                                                    (setq e (entget (setq sn (ssname s 0))))
  43.                                                  )
  44.                                           )
  45.                                      )
  46.                                 )
  47.                        )
  48.                        (setq 2p (cdr (cadr l)))
  49.              )
  50.            a (angle 1p 2p)
  51.      )
  52.      (foreach x (list *offDist* (- *offDist*))
  53.        (vla-offset (vlax-ename->vla-object sn) x)
  54.        (if (and (eq ly "Current")
  55.                 (not (eq en (setq o (entlast))))
  56.            )
  57.          (vla-put-layer (vlax-ename->vla-object o) (getvar 'CLAYER))
  58.        )
  59.      )
  60.      (command "text"
  61.               "mc"
  62.               (mapcar '(lambda (q p) (* (+ q p) 0.5)) 1p 2p)
  63.               0.2
  64.               (/ (* a 180) pi)
  65.               (strcat (rtos d 2 2) "/BT/RD")
  66.      )
  67.    )
  68. )
  69. (if dz
  70.    (setvar 'DIMZIN dz)
  71. )
  72. (princ)
  73. )(vl-load-com)
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 21:53:34 | 显示全部楼层
 
我修改了上面的程序,为偏移过程添加了一个图层选项,所以请尝试一下并告诉我。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 22:01:38 | 显示全部楼层
 
不客气。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 09:01 , Processed in 0.754634 second(s), 72 queries .

© 2020-2025 乐筑天下

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