乐筑天下

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

[编程交流] 初级问题

[复制链接]

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-6 10:59:10 | 显示全部楼层 |阅读模式
在没有激活命令的情况下,如何将定义设置为最后选定的对象?
 
请原谅我的简单lisp示例:
(命令“_move”“L”
 
在这个例子中,我只是指出我所说的最后一个对象是什么意思。
 
艾伦,
我肯定它在你和我共享的文件中,但我找不到它
回复

使用道具 举报

4

主题

940

帖子

961

银币

初来乍到

Rank: 1

铜币
12
发表于 2022-7-6 11:02:56 | 显示全部楼层
“L”不提供最后选择的对象,它提供创建的最后一个实体;也可通过(entlast)访问
回复

使用道具 举报

14

主题

719

帖子

706

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 11:07:32 | 显示全部楼层
呃。。。我对Lisp一点都不熟悉,所以如果我遇到了一些我不知道的东西,请原谅我-但是如果你点击P并且“选择对象”,提示你得到最后一个(上一个)选择。。这就是你想要的吗?
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:08:55 | 显示全部楼层
  1. (ssget "_P")

 
仅供参考:Alan:wink:
回复

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-6 11:12:12 | 显示全部楼层
 
很抱歉。阳光照在我的眼睛里
 
 
___
 
当我试图快速回复时,突然弹出一条消息,这让我笑了起来
 
正在发送快速回复-请稍候
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:16:08 | 显示全部楼层
没什么大不了的。这并不困扰我;我只是想从一开始就消除这种混淆。
 
 
 
你得到你想要的了吗?
回复

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-6 11:18:19 | 显示全部楼层
它产生了
 
; 错误:语法错误
 
它应该像(setq x(ssget“_P”)一样简单吗
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:23:28 | 显示全部楼层
对我来说效果很好。检查拼写错误。
回复

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-6 11:25:09 | 显示全部楼层
我想我的问题是(())。。现在我明白了
 
; 错误:错误的参数类型:consp
回复

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-6 11:28:38 | 显示全部楼层
好的,我正在编辑这个代码。这段代码正是我需要的,但我不想用鼠标选择一条线,而是想选择上一个对象。
 
Terry Miller编写的代码
 
  1. ;-------------------------------------------------------------------------------
  2. ; Program Name: DPL - Dimension Polylines
  3. ; Created By: Terry Miller (Email: [email="terrycadd@yahoo.com"]terrycadd@yahoo.com[/email])
  4. ; (URL: [url]http://web2.airmail.net/terrycad[/url])
  5. ; Date Created: 5-20-08
  6. ; Function: Dimensions Polyline shapes
  7. ;-------------------------------------------------------------------------------
  8. ; Revision History
  9. ; Rev By Date Description
  10. ;-------------------------------------------------------------------------------
  11. ; 1 TM 5-20-08 Initial version
  12. ;-------------------------------------------------------------------------------
  13. ; c:DPL - Dimensions Polyline
  14. ;-------------------------------------------------------------------------------
  15. (defun c:DPL (/ EntName^ EntPick@)
  16. (setvar "CMDECHO" 0)
  17. (if (setq EntPick@ (entsel "\nSelect Polyline to dimension: "))
  18. (if (= (cdr (assoc 0 (entget (car EntPick@)))) "LWPOLYLINE")
  19. (progn
  20. (setq EntName^ (cdr (assoc -1 (entget (car EntPick@)))))
  21. (DimPL EntName^)
  22. );progn
  23. );if
  24. );if
  25. (if (not EntName^)
  26. (princ "\nNo Polyline selected.")
  27. );if
  28. (princ)
  29. );defun c:DPL
  30. ;-------------------------------------------------------------------------------
  31. ; DimPL - Function to dimension Polyline
  32. ; Arguments: 1
  33. ; EntName^ = Polyline entity name
  34. ; Returns: Dimensions Polyline
  35. ;-------------------------------------------------------------------------------
  36. (defun DimPL (EntName^ / Bottom@ Clayer$ CW# DiffAng DimPts: DimSpace~ EntList@
  37. Item LastAng~ LastPt Left@ List@ NW@ Osmode# P0 P1 P2 Pt Pts@ PtsLen Right@ SE@
  38. Top@ X~ X1~ X1Y1 X1Y2 X1Ys@ X2~ X2Y1 X2Y2 X2Ys@ XPts@ Y~ Y1~ Y1X1 Y1X2 Y1Xs@ Y2~
  39. Y2X1 Y2X2 Y2Xs@ YPts@)
  40. ;-----------------------------------------------------------------------------
  41. (defun DimPts: (Pts@ StartPt EndPt Type$ / Add Num1~ Num2~ Nums1@ Nums2@ P1 P2
  42. Pt Return@)
  43. (setq Add t)
  44. (foreach Pt (member StartPt (append Pts@ Pts@))
  45. (if Add
  46. (setq Return@ (append Return@ (list Pt)))
  47. );if
  48. (if (equal Pt EndPt)
  49. (setq Add nil)
  50. );if
  51. );foreach
  52. (foreach Pt Return@
  53. (if (member Type$ (list "Left" "Right"))
  54. (setq Nums1@ (append Nums1@ (list (cadr Pt))))
  55. (setq Nums1@ (append Nums1@ (list (car Pt))))
  56. );if
  57. );foreach
  58. (foreach Num1~ (vl-sort Nums1@ '<)
  59. (setq Nums2@ nil)
  60. (foreach Pt Return@
  61. (if (member Type$ (list "Left" "Right"))
  62. (if (= (cadr Pt) Num1~)
  63. (setq Nums2@ (append Nums2@ (list (car Pt))))
  64. );if
  65. (if (= (car Pt) Num1~)
  66. (setq Nums2@ (append Nums2@ (list (cadr Pt))))
  67. );if
  68. );if
  69. );foreach
  70. (if (member Type$ (list "Left" "Bottom"))
  71. (setq Nums2@ (vl-sort Nums2@ '<))
  72. (setq Nums2@ (reverse (vl-sort Nums2@ '<)))
  73. );if
  74. (foreach Num2~ (cdr Nums2@)
  75. (if (member Type$ (list "Left" "Right"))
  76. (setq Pt (list Num2~ Num1~))
  77. (setq Pt (list Num1~ Num2~))
  78. );if
  79. (setq Return@ (vl-remove Pt Return@))
  80. );foreach
  81. );foreach
  82. (cond
  83. ((= Type$ "Left")
  84. (vl-sort Return@ (function (lambda (P1 P2)(< (cadr P1)(cadr P2)))))
  85. );case
  86. ((= Type$ "Top")
  87. (vl-sort Return@ (function (lambda (P1 P2)(< (car P1)(car P2)))))
  88. );case
  89. ((= Type$ "Right")
  90. (vl-sort Return@ (function (lambda (P1 P2)(> (cadr P1)(cadr P2)))))
  91. );case
  92. ((= Type$ "Bottom")
  93. (vl-sort Return@ (function (lambda (P1 P2)(> (car P1)(car P2)))))
  94. );case
  95. );cond
  96. );defun DimPts:
  97. ;-----------------------------------------------------------------------------
  98. (setq EntList@ (entget EntName^))
  99. (if (= (cdr (assoc 0 EntList@)) "LWPOLYLINE")
  100. (progn
  101. (foreach List@ EntList@
  102. (if (= (car List@) 10)
  103. (if (not (equal (cdr List@) LastPt))
  104. (progn
  105. (setq Pts@ (append Pts@ (list (cdr List@))))
  106. (if (> (length Pts@) 2)
  107. (if (/= (angle LastPt (cdr List@)) LastAng~) (setq DiffAng t))
  108. );if
  109. (if (> (length Pts@) 1)
  110. (setq LastAng~ (angle LastPt (cdr List@)))
  111. );if
  112. (setq LastPt (cdr List@))
  113. );progn
  114. );if
  115. );if
  116. );foreach
  117. (if (equal (car Pts@) (last Pts@))
  118. (setq Pts@ (reverse (cdr (reverse Pts@))))
  119. );if
  120. (setq PtsLen (length Pts@))
  121. );progn
  122. (exit)
  123. );if
  124. (foreach Pt Pts@
  125. (setq X~ (atof (rtos (car Pt) 2 )
  126. Y~ (atof (rtos (cadr Pt) 2 )
  127. XPts@ (append XPts@ (list X~))
  128. YPts@ (append YPts@ (list Y~))
  129. Pts@ (cdr (append Pts@ (list (list X~ Y~))))
  130. );setq
  131. );foreach
  132. (setq XPts@ (vl-sort XPts@ '<)
  133. YPts@ (vl-sort YPts@ '<)
  134. X1~ (car XPts@)
  135. X2~ (last XPts@)
  136. Y1~ (car YPts@)
  137. Y2~ (last YPts@)
  138. );if
  139. (foreach Pt Pts@
  140. (if (= (car Pt) X1~) (setq X1Ys@ (append X1Ys@ (list (cadr Pt)))))
  141. (if (= (car Pt) X2~) (setq X2Ys@ (append X2Ys@ (list (cadr Pt)))))
  142. (if (= (cadr Pt) Y1~) (setq Y1Xs@ (append Y1Xs@ (list (car Pt)))))
  143. (if (= (cadr Pt) Y2~) (setq Y2Xs@ (append Y2Xs@ (list (car Pt)))))
  144. );foreach
  145. (setq X1Ys@ (vl-sort X1Ys@ '<)
  146. X2Ys@ (vl-sort X2Ys@ '<)
  147. Y1Xs@ (vl-sort Y1Xs@ '<)
  148. Y2Xs@ (vl-sort Y2Xs@ '<)
  149. X1Y1 (list X1~ (car X1Ys@))
  150. X1Y2 (list X1~ (last X1Ys@))
  151. X2Y1 (list X2~ (car X2Ys@))
  152. X2Y2 (list X2~ (last X2Ys@))
  153. Y1X1 (list (car Y1Xs@) Y1~)
  154. Y1X2 (list (last Y1Xs@) Y1~)
  155. Y2X1 (list (car Y2Xs@) Y2~)
  156. Y2X2 (list (last Y2Xs@) Y2~)
  157. Pts@ (member X1Y1 (append Pts@ Pts@))
  158. );setq
  159. (while (> (length Pts@) PtsLen)
  160. (setq Pts@ (reverse (cdr (reverse Pts@))))
  161. );while
  162. (setq SE@ (member X2Y2 Pts@) NW@ Pts@)
  163. (foreach Item SE@
  164. (setq NW@ (vl-remove Item NW@))
  165. );foreach
  166. (setq SE@ (append SE@ (list X1Y1))
  167. NW@ (append NW@ (list X2Y2))
  168. CW# 0
  169. );setq
  170. (foreach Pt (list Y2X1 Y2X2)
  171. (if (member Pt NW@) (setq CW# (1+ CW#)))
  172. (if (member Pt SE@) (setq CW# (1- CW#)))
  173. );foreach
  174. (foreach Pt (list Y1X1 Y1X2)
  175. (if (member Pt SE@) (setq CW# (1+ CW#)))
  176. (if (member Pt NW@) (setq CW# (1- CW#)))
  177. );foreach
  178. (if (< CW# 0)
  179. (setq Pts@ (append (list (car Pts@))(reverse (cdr Pts@))))
  180. );if
  181. (setq Left@ (DimPts: Pts@ Y1X1 Y2X1 "Left"))
  182. (setq Top@ (DimPts: Pts@ X1Y2 X2Y2 "Top"))
  183. (setq Right@ (DimPts: Pts@ Y2X2 Y1X2 "Right"))
  184. (setq Bottom@ (DimPts: Pts@ X2Y1 X1Y1 "Bottom"))
  185. ;-----------------------------------------------------------------------------
  186. (command "UNDO" "BEGIN")
  187. (setq DimSpace~ (* (getvar "DIMSCALE") (getvar "DIMTXT") 3))
  188. (setq Osmode# (getvar "OSMODE")) (setvar "OSMODE" 0)
  189. (setq Clayer$ (getvar "CLAYER"))
  190. (command "LAYER" "S" "DIM" "");<--Change to your Dim layer info
  191. (setq P0 (polar X1Y1 pi (* DimSpace~ 1.5))
  192. P1 (car Left@)
  193. );setq
  194. (foreach P2 (cdr Left@)
  195. (command "DIM1" "VER" P1 P2 P0 "")
  196. (setq P1 P2)
  197. );foreach
  198. (if (> (length Left@) 2)
  199. (progn
  200. (setq P0 (polar P0 pi DimSpace~))
  201. (command "DIM1" "VER" (car Left@) (last Left@) P0 "")
  202. );progn
  203. );if
  204. (setq P0 (polar Y2X1 (* pi 0.5) (* DimSpace~ 1.5))
  205. P1 (car Top@)
  206. );setq
  207. (foreach P2 (cdr Top@)
  208. (command "DIM1" "HOR" P1 P2 P0 "")
  209. (setq P1 P2)
  210. );foreach
  211. (if (> (length Top@) 2)
  212. (progn
  213. (setq P0 (polar P0 (* pi 0.5) DimSpace~))
  214. (command "DIM1" "HOR" (car Top@) (last Top@) P0 "")
  215. );progn
  216. );if
  217. (setq P0 (polar X2Y2 0 (* DimSpace~ 1.5))
  218. P1 (car Right@)
  219. );setq
  220. (if (and (> (length Right@) 2) DiffAng)
  221. (foreach P2 (cdr Right@)
  222. (command "DIM1" "VER" P1 P2 P0 "")
  223. (setq P1 P2)
  224. );foreach
  225. );if
  226. (setq P0 (polar Y1X2 (* pi 1.5) (* DimSpace~ 1.5))
  227. P1 (car Bottom@)
  228. );setq
  229. (if (and (> (length Bottom@) 2) DiffAng)
  230. (foreach P2 (cdr Bottom@)
  231. (command "DIM1" "HOR" P1 P2 P0 "")
  232. (setq P1 P2)
  233. );foreach
  234. );if
  235. (setvar "CLAYER" Clayer$)
  236. (setvar "OSMODE" Osmode#)
  237. (command "UNDO" "END")
  238. (princ)
  239. );defun DimPL
  240. ;-------------------------------------------------------------------------------
  241. ; GetDimLayer - Returns the layer name that's on and has the most dimensions,
  242. ; or the current layer name if there's no dimensions.
  243. ;-------------------------------------------------------------------------------
  244. (defun GetDimLayer (/ DimLayer$ EntList@ Index# Layer$ LayerInfo@ LayerList@ List@ Num# SS&)
  245. (setq Layer$ (getvar "CLAYER"))
  246. (if (setq SS& (ssget "X" '((0 . "DIMENSION"))))
  247. (progn
  248. (setq Index# -1)
  249. (while (< (setq Index# (1+ Index#)) (sslength SS&))
  250. (setq EntList@ (entget (ssname SS& Index#))
  251. DimLayer$ (cdr (assoc 8 EntList@))
  252. LayerInfo@ (tblsearch "LAYER" DimLayer$)
  253. );setq
  254. (if (and (= (cdr (assoc 70 LayerInfo@)) 0)(> (cdr (assoc 62 LayerInfo@)) 0))
  255. (if (assoc DimLayer$ LayerList@)
  256. (setq Num# (1+ (cdr (assoc DimLayer$ LayerList@)))
  257. LayerList@ (subst (cons DimLayer$ Num#) (assoc DimLayer$ LayerList@) LayerList@)
  258. );setq
  259. (setq LayerList@ (append LayerList@ (list (cons DimLayer$ 1))))
  260. );if
  261. );if
  262. );while
  263. (if LayerList@
  264. (progn
  265. (setq Layer$ (car (car LayerList@))
  266. Num# (cdr (car LayerList@))
  267. );setq
  268. (foreach List@ (cdr LayerList@)
  269. (if (> (cdr List@) Num#)
  270. (setq Layer$ (car List@)
  271. Num# (cdr List@)
  272. );setq
  273. );if
  274. );foreach
  275. );progn
  276. );if
  277. );progn
  278. );if
  279. Layer$
  280. );defun GetDimLayer
  281. ;-------------------------------------------------------------------------------
  282. (princ);End of DPL.lsp
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 11:28 , Processed in 0.426452 second(s), 72 queries .

© 2020-2025 乐筑天下

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