乐筑天下

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

[编程交流] 截面标记的Lisp例程

[复制链接]

5

主题

35

帖子

38

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 17:57:03 | 显示全部楼层
由于某种原因,当我运行命令时。它运行着,但什么都不做。它没有给出未知的命令,只是什么都不做。这让我很困惑,我正试图找出原因。
 
这与我正在运行的AutoCAD版本有关吗?2009
 
;---章节标题---
(defun c:插入sectcall块(/layerset)
(setq layerset(getvar“clayer”))
(setvar“clayer”“35”)
(setq scaleset(/1(getvar“cannoscalevalue”))
(setvar“ATTDIA”0)
(setq ins pt(getpoint“\n选择插入点:”)
(if(=nil ins pt)(setq ins pt(列表805 553)))
(命令“-insert”“section title”ins pt scaleset scaleset“0”)
(命令“explode”(entlast))
(setvar“ATTDIA”1)
(setvar“clayer”layerset)
(普林斯)
) ;德芬
 
这是我为其他块(如jpg文件中所示)编写的代码。
 
这就是我所做的,但我不知道如何处理正交和箭头的方向。
 
;---截面气泡---
(defun c:插入sectbub块(/layerset)
(setq layerset(getvar“clayer”))
(setvar“clayer”“35”)
(setq scaleset(/1(getvar“cannoscalevalue”))
(setvar“ATTDIA”0)
(setq ins-pt1(getpoint“\n选择第一个插入点:”)
(if(=nil ins-pt1)(setq ins-pt1(列表805 553)))
(setq ins-pt2(getpoint“\n选择第二个插入点:”)
(if(=nil ins-pt2)(setq ins-pt2(列表805 553)))
(命令“-insert”“section bubhead”ins-pt1 scaleset scaleset“0”)
(命令“-insert”“section bubarrow”ins-pt1 scaleset scaleset“0”)
(命令“-insert”“section bubtail”ins-pt2 scaleset scaleset“0”)
(命令“explode”(entlast))
(setvar“ATTDIA”1)
(setvar“clayer”layerset)
(普林斯)
) ;德芬
182254ms8j9s79538j39t6.jpg
回复

使用道具 举报

28

主题

130

帖子

126

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
154
发表于 2022-7-6 17:58:48 | 显示全部楼层
对不起,我漏掉了一点。
 
试试这个-告诉我它是否有效。
 
 
 
  1. (defun c:SECTMARK ()
  2. (SETQ $PATH "C:/Documents and Settings/");CHANGE THIS TO THE PATH THAT YOU PASTE YOUR BLOCKS TO. CHEERS
  3. (SE-erro)
  4. (SE-quiet)
  5. (SE-init)
  6. (Get_mvs)
  7. (pick1)
  8. (ask1)
  9. (setq #loc #org)  ;  ### Bubble Point
  10. (make-pts1)
  11. (setvar "attdia" 0)
  12. (command
  13.   "layer" "m" "TAGS" ""
  14.   "insert" (strcat $PATH "Sec-ball") #loc DMS DMS "0" #sectno #drawno
  15.   "insert" (strcat $PATH "Sec-arr")  #loc (* -1 DMS) DMS (rtd #ang)
  16. ); Arrow
  17. (setvar "attdia" 1)
  18. (setq TAIL "Sec-endB")
  19. (setq MIR nil)
  20. (setq MIR (getstring "\nFlip? Y/N <N>: "))
  21. (if (/= MIR "")(setq MIR (strcase (substr MIR 1 1))))
  22. (if (= MIR "Y")
  23. (progn
  24. (command "mirror" (entlast) "" #loc #2nd "y")
  25. (setq TAIL "Sec-endA")))
  26. (COMMAND "-INSERT" (strcat $PATH TAIL) "_r" (rtd (+ (* pi (/ 180 180)) #ang)) "_s" DMS #LOC )
  27. (COMMAND "UCS" "Z" (RTD #ANG))
  28. (SETVAR "ORTHOMODE" 1)
  29. (princ "\nSelect base point to move section tail from..")
  30. (COMMAND "MOVE" (ENTLAST) "" pause PAUSE)
  31. (COMMAND "UCS" "P")
  32. (SE-normal)
  33. (setq *error* olderror)
  34. (princ)
  35. )
  36. (defun dtr (a)
  37.   (* pi (/ a 180.0))
  38. )
  39. (defun rtd (a)
  40.   (* 180.0 (/ a pi))
  41. )
  42. (defun SE-init ()
  43. (setq #45  (dtr 45)
  44.      #90  (dtr 90)
  45.      #135 (dtr 135)
  46.      #180 (dtr 180)
  47.      #225 (dtr 225)
  48.      #270 (dtr 270)
  49.      #315 (dtr 315)
  50. )
  51. )
  52. (defun pick1 ()
  53. (setq #org nil #2nd nil #side nil)
  54. (while (= #org nil)
  55.   (setq #org (getpoint "\nSelect Center point of Section Bubble: "))
  56. )
  57. (while (= #2nd nil)
  58.   (setq #2nd (getpoint #org "\nRotation of Section mark?: "))
  59.   (if (= (getvar "orthomode") 0)
  60.      (setq orno T)
  61.      (setq orno nil)
  62.   )
  63. )
  64. (setq #ang (angle #org #2nd))
  65. (setq #dist (distance #org #2nd))
  66. )
  67. (DEFUN Get_mvs ()
  68. (if (and (= (getvar "cvport") 1)(= (getvar "tilemode") 0)) ; if in Paperspace
  69.   (setq dms 1)
  70.   (if  (= (getvar "tilemode") 0) ; if in Modelspace inside viewport
  71.      (progn
  72.         (vscl)
  73.         (setq dms mvs)
  74.      );progn
  75.      (Try_Dimscale)
  76.   );if
  77. );if
  78. );defun
  79. (defun ask1 ()
  80. (if #sectno
  81.   (progn
  82.      (setq #prevno #sectno)
  83.      (setq #sectno (getstring (strcat "\nSection Number <" #prevno ">: ")))
  84.      (if (= #sectno "")(setq #sectno #prevno))
  85.   )
  86.   (progn
  87.      (setq #sectno (getstring "\nSection Number <1>: "))
  88.      (if (= #sectno "") (setq #sectno "1"))
  89. )
  90. )
  91. (if #drawno
  92.   (progn
  93.      (setq #prevdrawno #drawno)
  94.      (setq #drawno (getstring (strcat "\nDrawing Reference <" #prevdrawno ">: ")))
  95.      (if (= #drawno "")(setq #drawno #prevdrawno))
  96.   )
  97.   (progn
  98.      (setq #drawno (getstring "\nDrawing Reference <->: "))
  99.      (if (= #drawno "") (setq #drawno "-"))
  100.   )
  101. )
  102. )
  103. (defun make-pts1 ()
  104. (setq #bb1  (polar #loc  (+ #ang #180) (* DMS 17.0)));; Bubble Centre
  105. (setq #tp2  (polar #loc (+ #ang #90)  (* DMS 15.0))) ;; Text Left
  106. (setq #tp1  (polar #2nd (+ #ang #90)  (* DMS 15.0))) ;; Text right
  107. (cond
  108. ( (= #90 #ang)(setq #tang 0) )
  109. ( (= #270 #ang)(setq #tang 0) )
  110. ( (and (< #90 #ang)(> #270 #ang) )(setq #tang (+ #180 #ang)) )
  111. ( t (setq #tang #ang) )
  112. );cond
  113. )
  114. (defun SE-quiet ()
  115. (setvar "cmdecho"   0)
  116. (setq OLDOSMODE (getvar "osmode"))
  117. (setvar "osmode" 0)
  118. (COMMAND "UNDO" "GROUP")
  119. (setq angb   (getvar "angbase")
  120.      angd   (getvar "angdir")
  121.      orthom (getvar "orthomode")
  122.      blipm  (getvar "blipmode")
  123. )
  124. (setvar "plinewid"  0)
  125. (setvar "blipmode"  0)
  126. (setvar "angbase"   0)
  127. (setvar "angdir"    0)
  128. (if orno (setvar "orthomode" 0)
  129.         (setvar "orthomode" 1)
  130. )
  131. (CURRENT_COLOR)
  132. (setq #CLA (getvar "clayer"))
  133. (setq #CLT (getvar "celtype"))
  134. (command "color" "bylayer")
  135. (command "linetype" "s" "bylayer" "")
  136. (command "layer" "m" "TAGS" "")
  137. )
  138. ;;; Reset Values
  139. (defun SE-normal ()
  140. (if blipm   (setvar "blipmode"  blipm))
  141. (if angb    (setvar "angbase"   angb))
  142. (if angd    (setvar "angdir"    angd))
  143. (if orthom  (setvar "orthomode" orthom))
  144. (command "layer" "s" #CLA "")
  145. (command "color" #CCN)
  146. (command "linetype"  "s" #CLT "")
  147. (COMMAND "UNDO" "END")
  148. (setvar "cmdecho"   1)
  149. (setvar "osmode" oldosmode)
  150. )
  151. (defun SE-erro () (setq olderr *error* *error* SEerra))
  152. (defun SEerra (s)                            ; If an error (such as CTRL-C) occurs
  153.                                           ; while this command is active...
  154.   (if (/= s "Function cancelled")
  155.      (princ (strcat "\nError: " s))
  156.   )
  157.   (if blipm   (setvar "blipmode"  blipm))
  158.   (if angb    (setvar "angbase"   angb))
  159.   (if angd    (setvar "angdir"    angd))
  160.   (if orthom  (setvar "orthomode" orthom))
  161.   (if #CLA    (command "layer" "s" #CLA ""))
  162.   (if #CCN    (command "color" #CCN))
  163.   (if #CLT    (command "linetype" "s" #CLT ""))
  164.   (COMMAND "UNDO" "END")
  165.   (setvar "cmdecho" 1)
  166.   (setvar "osmode" oldosmode)
  167.   (setq *error* olderr)                   ; restore old *error* handler
  168.   (princ)
  169. )
  170. (defun CURRENT_COLOR ()
  171.   (setq #CCN (getvar "cecolor"))
  172.   (if (or (= #CCN "BYBLOCK")(= #CCN "BYLAYER"))
  173.      (setq #cn #CCN)
  174.      (progn
  175.         (setq #cr (atoi #CCN))
  176.         (if (and (> #cr 0) (< #cr )
  177.            (progn
  178.               (setq #CLIST (list "RED" "YELLOW" "GREEN" "CYAN" "BLUE" "MAGENTA" "WHITE"))
  179.               (setq #cn (nth (- #cr 1) #CLIST))
  180.            )
  181.            (setq #cn (rtos #cr 2 0))
  182.         )
  183.      )
  184.   )
  185. )
  186. (defun Try_Dimscale ()
  187. (if (or (= (getvar "Dimscale") 0)(= (getvar "Dimscale") 1))
  188.   (progn
  189.      (initget 1)
  190.      (setq dms (getint "\nEnter SCALE: "))
  191.   )
  192.   (setq dms (getvar "Dimscale"))
  193. );if
  194. );defun
回复

使用道具 举报

28

主题

130

帖子

126

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
154
发表于 2022-7-6 18:01:10 | 显示全部楼层
靠墙matthew on cad tutor将所有代码包装在“代码”标记之间。
 
  1. Push the # button when posting - then paste your code between the two sets of brackets to do this.
回复

使用道具 举报

5

主题

35

帖子

38

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 18:04:47 | 显示全部楼层
Russell,直到这一部分。
 
  1. Command:  INSERT-SECTMARK-BLOCK
  2. Enter SCALE: 1
  3. Select Center point of Section Bubble:
  4. Rotation of Section mark?:
  5. Section Number <1>: 1
  6. Drawing Reference <2>: 2
  7. "PersonalCADSUPPORTSec-ball.dwg": Can't find file in search path:
  8. C:\Documents and Settings\matthew.russell\My Documents\ (current directory)
  9. D:\Personal\CAD\Support\
  10. D:\Personal\CAD\MENU\
  11. D:\Personal\CAD\MENU\ICONS\
  12. C:\sp2000\
  13. X:\Acad\Support\Brisbane\Linetypes\
  14. X:\Acad\Support\Brisbane\Fonts\
  15. C:\Documents and Settings\matthew.russell\Application Data\Autodesk\AutoCAD
  16. 2009\R17.2\enu\support\
  17. C:\Program Files\AutoCAD 2009\support\
  18. C:\Program Files\AutoCAD 2009\fonts\
  19. C:\Program Files\AutoCAD 2009\help\
  20. C:\Program Files\AutoCAD 2009\express\
  21. C:\Program Files\AutoCAD 2009\drv\
  22. C:\Program Files\AutoCAD 2009\
  23. *Invalid*

 
我将您给我的DWG存储在D:\Personal\CAD中,然后在我添加的代码(SETQ$PATH“D:\Personal\CAD”)中放置注释。
 
不必输入刻度,我如何更改该部分,使其自动获得刻度
回复

使用道具 举报

28

主题

130

帖子

126

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
154
发表于 2022-7-6 18:07:41 | 显示全部楼层
比例在这里很好。
 
将比例改为1:500 1:100,看看你是否还有问题。
 
也会发生变化
  1. (SETQ $PATH "D:\Personal\CAD")

 

  1.   (SETQ $PATH "D:/Personal/CAD/")

 
然后看看你怎么样。
 
看看这对你是否有效,然后告诉我
回复

使用道具 举报

5

主题

35

帖子

38

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 18:13:24 | 显示全部楼层
我已经把代码改成了你说的,但出于某种原因。我有。lsp文件已加载,我输入了命令,但出于某种原因,它表示这不是命令。这真的很令人费解。你自学过这样的编码吗?
 
我想对这段代码做的是把它改成
  1. (defun Try_Dimscale ()
  2. (if (or (= (getvar "Dimscale") 0)(= (getvar "Dimscale") 1))
  3.   (progn
  4.      (initget 1)
  5.      (setq dms (getint "\nEnter SCALE: "))
  6.   )
  7.   (setq dms (getvar "Dimscale"))
  8. );if
  9. );defun

 

 
  1. (defun Try_Dimscale ()
  2. (setvar "DIMSCALE" (/ 1.0 (getvar "CANNOSCALEVALUE"))))
  3. );defun

 
这样,我设置的任何比例都会自动获得它,并在该比例中插入剖面标记。你认为这会起什么作用?
回复

使用道具 举报

5

主题

35

帖子

38

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 18:13:36 | 显示全部楼层
我得到了它加载我只是忘记了重新加载应用程序。但文件位置仍不工作。我想把它放在c盘上的文档中。正如它最初寻找的位置一样,因为当错误出现在它下面说找不到它时,它有一个“C:\Documents and Settings\matthew.russell\My Documents\(current directory)”,所以我想可能有什么东西使命令出于未知原因仍在那里搜索
回复

使用道具 举报

28

主题

130

帖子

126

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
154
发表于 2022-7-6 18:16:56 | 显示全部楼层
matthew发布的代码显示了您将$PATH设置为什么
回复

使用道具 举报

5

主题

35

帖子

38

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 18:22:43 | 显示全部楼层
  1. (SETQ $PATH "D:\Personal\CAD\Support")

 
lisp文件和dwg文件都在support文件夹中
回复

使用道具 举报

28

主题

130

帖子

126

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
154
发表于 2022-7-6 18:24:59 | 显示全部楼层
这就是这些积木的存放位置?
 
请将此代码更改为
  1. (SETQ $PATH "D:/Personal/CAD/Support/")

 
您必须在lisp中反转“\”。
 
请告诉我你过得怎么样好的
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 16:00 , Processed in 0.332219 second(s), 73 queries .

© 2020-2025 乐筑天下

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