乐筑天下

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

[编程交流] 获取a的X Y Z坐标

[复制链接]

66

主题

180

帖子

119

银币

后起之秀

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

铜币
341
发表于 2022-7-5 17:22:30 | 显示全部楼层 |阅读模式
是否可以将一行的起点X Y Z和终点X Y Z放入剪贴板??
 
我需要手动复制坐标,然后说将其粘贴到文本文件?。。
你知道的?CTRL+V它在别的地方吗?
因为我有这个宏代码,我不太了解lisp,我该如何将XYZ坐标放入剪贴板。这样我就可以使用宏搜索提取的excel文件上的坐标
 
有人能帮我做一个lisp例程,只剪切线的x y z坐标吗?
因此,我可以按CTRL+V组合键将其放置在任何位置,将其放置在excel单元格、文本、文字中,我可以使用CTRL+V快捷键的任何位置。。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:37:24 | 显示全部楼层
1尝试数据提取应该做你想做的事。
 
 
2列表选择行复制信息,但您将获得额外信息。
 
 
3使用lisphttp://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/pasteclip-and-copyclip-commands/td-p/3790508
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 17:51:46 | 显示全部楼层
请尝试以下操作:
  1. (defun c:l2c ( / ent )
  2.    (if (setq ent (LM:selectifobject "\nSelect line: " "LINE"))
  3.        (if (LM:copytoclipboard
  4.                (LM:lst->str
  5.                    (mapcar 'rtos
  6.                        (append
  7.                            (cdr (assoc 10 (entget ent)))
  8.                            (cdr (assoc 11 (entget ent)))
  9.                        )
  10.                    )
  11.                    "\t"
  12.                )
  13.            )
  14.            (princ "\nLine endpoints copied to clipboard.")
  15.        )
  16.    )
  17.    (princ)
  18. )
  19.       
  20. ;; Same method as MP demonstrates here: http://bit.ly/170kacW
  21. (defun LM:copytoclipboard ( str / clp htm par rtn )
  22.    (if (setq htm (vlax-create-object "htmlfile"))
  23.        (progn
  24.            (setq rtn
  25.                (vl-catch-all-apply
  26.                   '(lambda ( )
  27.                        (setq par (vlax-get htm 'parentwindow)
  28.                              clp (vlax-get par 'clipboarddata)
  29.                        )
  30.                        (vlax-invoke clp 'setdata "Text" str)
  31.                    )
  32.                )
  33.            )
  34.            (foreach obj (list clp par htm)
  35.                (if (= 'vla-object (type obj))
  36.                    (vlax-release-object obj)
  37.                )
  38.            )
  39.            (if (not (vl-catch-all-error-p rtn)) str)
  40.        )
  41.    )
  42. )
  43. ;; Select if Object  -  Lee Mac
  44. ;; Continuously prompts the user for a selection of a specific object type
  45. (defun LM:selectifobject ( msg typ / ent )
  46.    (while
  47.        (progn (setvar 'errno 0) (setq ent (car (entsel msg)))
  48.            (cond
  49.                (   (= 7 (getvar 'errno))
  50.                    (princ "\nMissed, try again.")
  51.                )
  52.                (   (null ent) nil)
  53.                (   (not (wcmatch (cdr (assoc 0 (entget ent))) typ))
  54.                    (princ "\nInvalid object selected.")
  55.                )
  56.            )
  57.        )
  58.    )
  59.    ent
  60. )
  61. ;; List to String  -  Lee Mac
  62. ;; Concatenates each string in a supplied list, separated by a given delimiter
  63. ;; lst - [lst] List of strings to concatenate
  64. ;; del - [str] Delimiter string to separate each item
  65. (defun LM:lst->str ( lst del )
  66.    (if (cdr lst)
  67.        (strcat (car lst) del (LM:lst->str (cdr lst) del))
  68.        (car lst)
  69.    )
  70. )
  71. (vl-load-com) (princ)
回复

使用道具 举报

66

主题

180

帖子

119

银币

后起之秀

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

铜币
341
发表于 2022-7-5 17:56:49 | 显示全部楼层
 
 
这正是我需要的!!!!非常感谢!我现在可以用这个了!天哪,你的天才!
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:08:54 | 显示全部楼层
不客气!
回复

使用道具 举报

66

主题

180

帖子

119

银币

后起之秀

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

铜币
341
发表于 2022-7-5 18:18:44 | 显示全部楼层
先生,有一个问题。。。
我无法使用命令:
“选择P”在选择线之后,我如何改变选择线的方式?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:24:48 | 显示全部楼层
 
请尝试以下修改的代码:
  1. (defun c:l2c ( / ent )
  2.    (if (or (and (setq ent (ssget "_I" '((0 . "LINE"))))
  3.                 (setq ent (ssname ent 0))
  4.            )
  5.            (setq ent (LM:selectifobject "\nSelect line: " "LINE"))
  6.        )
  7.        (if (LM:copytoclipboard
  8.                (LM:lst->str
  9.                    (mapcar 'rtos
  10.                        (append
  11.                            (cdr (assoc 10 (entget ent)))
  12.                            (cdr (assoc 11 (entget ent)))
  13.                        )
  14.                    )
  15.                    "\t"
  16.                )
  17.            )
  18.            (princ "\nLine endpoints copied to clipboard.")
  19.        )
  20.    )
  21.    (princ)
  22. )
  23.       
  24. ;; Same method as MP demonstrates here: http://bit.ly/170kacW
  25. (defun LM:copytoclipboard ( str / clp htm par rtn )
  26.    (if (setq htm (vlax-create-object "htmlfile"))
  27.        (progn
  28.            (setq rtn
  29.                (vl-catch-all-apply
  30.                   '(lambda ( )
  31.                        (setq par (vlax-get htm 'parentwindow)
  32.                              clp (vlax-get par 'clipboarddata)
  33.                        )
  34.                        (vlax-invoke clp 'setdata "Text" str)
  35.                    )
  36.                )
  37.            )
  38.            (foreach obj (list clp par htm)
  39.                (if (= 'vla-object (type obj))
  40.                    (vlax-release-object obj)
  41.                )
  42.            )
  43.            (if (not (vl-catch-all-error-p rtn)) str)
  44.        )
  45.    )
  46. )
  47. ;; Select if Object  -  Lee Mac
  48. ;; Continuously prompts the user for a selection of a specific object type
  49. (defun LM:selectifobject ( msg typ / ent )
  50.    (while
  51.        (progn (setvar 'errno 0) (setq ent (car (entsel msg)))
  52.            (cond
  53.                (   (= 7 (getvar 'errno))
  54.                    (princ "\nMissed, try again.")
  55.                )
  56.                (   (null ent) nil)
  57.                (   (not (wcmatch (cdr (assoc 0 (entget ent))) typ))
  58.                    (princ "\nInvalid object selected.")
  59.                )
  60.            )
  61.        )
  62.    )
  63.    ent
  64. )
  65. ;; List to String  -  Lee Mac
  66. ;; Concatenates each string in a supplied list, separated by a given delimiter
  67. ;; lst - [lst] List of strings to concatenate
  68. ;; del - [str] Delimiter string to separate each item
  69. (defun LM:lst->str ( lst del )
  70.    (if (cdr lst)
  71.        (strcat (car lst) del (LM:lst->str (cdr lst) del))
  72.        (car lst)
  73.    )
  74. )
  75. (vl-load-com) (princ)
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 03:53 , Processed in 0.384842 second(s), 66 queries .

© 2020-2025 乐筑天下

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