乐筑天下

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

[编程交流] ssget-再次

[复制链接]

4

主题

20

帖子

16

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 07:48:34 | 显示全部楼层 |阅读模式
我想使用ssget选择围绕中心的点,其中lst是3dpoints的列表
 
  1.       (setq ss (ssget '(
  2.             (-4 . "<OR")
  3.             (-4 . "<AND")
  4.             ("_CP"  lst)
  5.             (0 . "POINT")
  6.             (-4 . "AND>")
  7.             (-4 . "OR>"))))

 
有什么帮助吗?谢谢
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-6 08:00:19 | 显示全部楼层
  1. (setq ss (ssget "_CP" lst '((0 . "POINT"))))

 
M、 R。
回复

使用道具 举报

4

主题

20

帖子

16

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 08:10:14 | 显示全部楼层
不起作用。。。或者我做错了什么。。。。
回复

使用道具 举报

4

主题

20

帖子

16

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 08:17:33 | 显示全部楼层
我又错了,还好。。。谢谢
回复

使用道具 举报

4

主题

20

帖子

16

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 08:31:23 | 显示全部楼层
我试着在调查的3个点之间做一个“插值”。我的意思是,在由3个点(测量点)定义的平面上找到一个点的高程。这就是我现在拥有的,仍在工作,看起来很糟糕。。。。很抱歉。也许有人有一些类似的东西,或一些链接,或一些想法如何使它更简单-当然可以做得更好。谢谢
 
  1. (defun c:Z3( /   te sizetext oldEcho oldosmode
  2.        p1 p2 p3 linie ppt z )
  3. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  4. (defun LM:GetIntersections ( obj1 obj2 )
  5. (LM:GroupByNum (vlax-invoke obj1 'IntersectWith obj2 acExtendBoth) 3)
  6. )
  7. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  8. (defun LM:GroupByNum ( l n / r)
  9. (if l
  10.    (cons
  11.      (reverse (repeat n (setq r (cons (car l) r) l (cdr l)) r))
  12.      (LM:GroupByNum l n)
  13.    )
  14. )
  15. )      
  16. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  17. (vl-load-com)
  18.    (defun *error* (msg)
  19.    (and uFlag (vla-EndUndoMark aDoc))
  20.    (and msg (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
  21.                 (princ (strcat "\n** Error: " msg " **"))))
  22.    (princ))
  23. (setq aDoc (vla-get-ActiveDocument (vlax-get-acad-object)))
  24. (setq uFlag (not (vla-StartUndoMark aDoc)))
  25. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  26. (setvar "dimdec" 3)
  27. (princ "\nSELECTEAZA TEXT PENTRU MARIME CARACTERE")
  28. (if(setq te (entsel))
  29. (setq sizetext (cdr(assoc 40 (entget(car te))))))
  30. (if (=  te nil)(setq sizetext 5))
  31. (setq oldEcho(getvar "CMDECHO"))
  32. (setvar "CMDECHO" 0)
  33. (setq oldosmode (getvar "OSMODE"))
  34. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  35. (setvar "OSMODE" 512)
  36. (princ "\nSELECTEAZA PUNCT")
  37.   (if
  38.      (setq p1 (getpoint "\nPOINT  1")
  39.        p2 (getpoint "\nPOINT 2")
  40.        p3 (getpoint "\nPOINT 3")
  41.        pc (getpoint "\nPOINT UNKNOWN"))   
  42.    (progn
  43.       (setvar "OSMODE" 9)
  44.       (SETVAR "CECOLOR" "232")
  45.       (command "_.line" p1 p2 "")
  46.       (setq l12 (entlast))
  47.       (command "_.line" p1 p3 "")
  48.       (setq l13 (entlast))
  49.       (command "_.line" p2 p3 "")
  50.       (setq l23 (entlast))
  51.       (command "_.line" p1 pc "")
  52.       (setq lc (entlast))
  53.       (setq x1 (car p1)
  54.         x2 (car p2)
  55.         x3 (car p3)
  56.         xc (car pc)
  57.         y1 (cadr p1)
  58.         y2 (cadr p2)
  59.         y3 (cadr p3)
  60.         yc (cadr pc)
  61.         z1 (caddr p1)
  62.         z2 (caddr p2)
  63.         z3 (caddr p3)     
  64.    )
  65.      (command "_.line" (list x2 y2 0) (list x3 y3 0) "")
  66.      (setq l23p (entlast))
  67.      (command "_.line" (list x1 y1 0) (list xc yc 0) "")
  68.      (setq lp (entlast))
  69.      (setq pint0 (LM:GetIntersections (vlax-ename->vla-object l23p) (vlax-ename->vla-object lp)))
  70.      (setq pint0 (list (caar pint0) (cadr (car pint0)) (caddr (car pint0))))
  71.      (command "_.line" pint0  (list (car pint0) (cadr pint0) 10.0) "")
  72.      (setq lint (entlast))
  73.      (setq pint (LM:GetIntersections (vlax-ename->vla-object lint) (vlax-ename->vla-object l23)))
  74.      (setq pint (list (caar pint) (cadr (car pint)) (caddr (car pint))))
  75.      (command "_.line" p1 pint "")
  76.      (setq lcf (entlast))
  77.      (command "_.line" pc (list (car pc) (cadr pc) 10.0) "")
  78.      (setq laj (entlast))
  79.      (setq pcf (LM:GetIntersections (vlax-ename->vla-object laj) (vlax-ename->vla-object lcf)))
  80.      (setq pcf (list (caar pcf) (cadr (car pcf)) (caddr (car pcf))))
  81.      (setq z (rtos (caddr pcf) 2 3))
  82.      (command "_.point" pcf)
  83.      (command "text"  pcf  sizetext "0" (strcat "  " z))
  84.      (command "_.erase" l12 l13 l23 lc l23p lp lint lcf laj "")
  85.      (SETVAR "CECOLOR" "BYLAYER")
  86.     ); end progn
  87.   );end if
  88.       (setvar "CMDECHO" oldEcho)
  89.       (setvar "OSMODE" OLDOSMODE)
  90.       (setvar "dimdec" 2)  
  91. (*error* nil)
  92. (princ)
  93. )
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-6 08:32:30 | 显示全部楼层
试试这个:
 
  1. ;; Line-Plane Intersection  -  Lee Mac
  2. ;; Returns the point of intersection of a line defined by
  3. ;; points p1,p2 and a plane defined by its origin and normal
  4. (defun LM:IntersLinePlane ( p1 p2 org nm )
  5.    (setq org (trans org 0 nm)
  6.          p1  (trans p1  0 nm)
  7.          p2  (trans p2  0 nm)
  8.    )
  9.    (trans
  10.        (inters p1 p2
  11.            (list (car p1) (cadr p1) (caddr org))
  12.            (list (car p2) (cadr p2) (caddr org))
  13.            nil
  14.        )
  15.        nm 0
  16.    )
  17. )
  18. ;; Vector Cross Product  -  Lee Mac
  19. ;; Args: u,v - vectors in R^3
  20. (defun v^v ( u v )
  21.    (list
  22.        (- (* (cadr u) (caddr v)) (* (cadr v) (caddr u)))
  23.        (- (* (car  v) (caddr u)) (* (car  u) (caddr v)))
  24.        (- (* (car  u) (cadr  v)) (* (car  v) (cadr  u)))
  25.    )
  26. )
  27. ;; Unit Vector  -  Lee Mac
  28. ;; Args: v - vector in R^2 or R^3
  29. (defun v1 ( v )
  30.    (   (lambda ( n ) (if (equal 0.0 n 1e-10) nil (mapcar '/ v (list n n n))))
  31.        (distance '(0.0 0.0 0.0) v)
  32.    )
  33. )
  34. (defun c:Z3 ( / p1 p2 p3 pc pcv norvec1plane pcc z )
  35. (setq p1 (getpoint "\nPick first plane point : ")
  36.        p2 (getpoint "\nPick second plane point : ")
  37.        p3 (getpoint "\nPick third plane point : ")
  38.        pc (getpoint "\nPick 2d point to project it to plane : ")
  39. )
  40. (setq pcv (list (car pc) (cadr pc) (+ (caddr pc) 1.0)))
  41. (setq norvec1plane (v1 (v^v (mapcar '- p3 p1) (mapcar '- p2 p1))))
  42. (setq pcc (LM:IntersLinePlane pc pcv p1 norvec1plane))
  43. (setq z (rtos (caddr pcc) 2 3))
  44. (command "_.point" pcc)
  45. (command "text" pcc 5.0 "0" (strcat "  " z))
  46. (princ)
  47. )

 
M、 R。
回复

使用道具 举报

5

主题

22

帖子

17

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 08:41:22 | 显示全部楼层
干杯,马可!
回复

使用道具 举报

4

主题

20

帖子

16

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 08:55:20 | 显示全部楼层
太好了,谢谢!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-9 21:44 , Processed in 0.698822 second(s), 68 queries .

© 2020-2025 乐筑天下

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