乐筑天下

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

[编程交流] 需要此LISP的帮助

[复制链接]

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 10:28:38 | 显示全部楼层 |阅读模式
嗨,有人能帮我解决这个Lisp程序(CAD2010)。
这不是我的-我下载了它,但希望它被修改一点。
我想选择一个名为“TL-LD-Scanlight Interconnecting Leads”的层
然后,我希望lisp用它们的尺寸标注该层上的所有线,并将这些尺寸标注在一个新的层上,该层标记为“TL-LD-Scanlight Interconnecting dimension”。
这将使我们能够关闭和打开dim,因为我们有更多的操作要做。
我希望文本高度恒定在50,偏移量为75
这个lsp有一个前缀选项,我想在维度外设置为“>”(常数为)。
我只希望操作员在CAD中键入“扫描线”,其他一切都完成了。
我还希望没有标记(即点样式设置为nothing)。
我自己也试过这么做,但一直在破译代码!!
 
提前谢谢你
Lisp程序在下面
 
  1. ; +-------+---------+---------+-----SCANLINE.lsp----+---------+--------+--------+ ;
  2. (vl-load-com)
  3. (defun C:SCANLINE (/ acsp adoc ang der ent gap midp mtx oid pline pref txp txt)
  4. (or adoc
  5.      (setq adoc
  6.      (vla-get-activedocument
  7.        (vlax-get-acad-object)
  8.        )
  9.     )
  10.      )
  11. (if (and
  12. (= (getvar "tilemode") 0)
  13. (= (getvar "cvport") 1)
  14. )
  15.    (setq acsp (vla-get-paperspace adoc))
  16.    (setq acsp (vla-get-modelspace adoc))
  17.    )
  18. (if (setq ent (entsel "\nSelect polyline >>"))
  19.    (progn
  20. (setq oid (vla-get-objectid
  21.     (setq pline (vlax-ename->vla-object
  22.       (car ent))))
  23.      )
  24. (setq midp (vlax-curve-getclosestpointto pline
  25.      (vlax-curve-getpointatdist pline
  26.        (/ (vla-get-length pline) 2)))
  27.      )
  28. (vlax-invoke acsp 'AddCircle midp 2.0)
  29. (setq der (vlax-curve-getfirstderiv pline
  30.                        (vlax-curve-getparamatpoint pline midp)))
  31. (if (zerop (cadr der))
  32.           (setq ang (/ pi 2))
  33.           (setq ang (- pi (atan (/ (car der) (cadr der)))))
  34.         )
  35. (initget 6)
  36. (setq hgt (getdist "\nEnter text height <5.0>: "))
  37. (if (not hgt)(setq hgt 5.))
  38. (initget 6)
  39. (setq gap (getdist "\nEnter distance of the text offset <2.5>: "))
  40. (if (not gap)(setq gap 2.5))
  41. (setq txp (polar midp ang gap))
  42. (setq pref (getstring T "\nEnter label prefix <920>: "))
  43. (if (eq "" pref)(setq pref "920"))
  44. (setq pref (strcat pref " ("))
  45. (setq txt (strcat pref
  46. "%<[url="file://\\AcObjProp"]\\AcObjProp[/url] Object(%<[url="file://\\_ObjId"]\\_ObjId[/url] "
  47.    (itoa oid)
  48.    ">%).Length [url="file://\\f"]\\f[/url] "%lu2%pr2">% m)");--> number of decimals = 2
  49.      )
  50. (setq mtx (vlax-invoke acsp 'AddMText txp 0.0 txt)
  51.        )
  52. (setq ang (- ang (/ pi 2)))
  53. (setq ang (cond
  54.   ((> pi ang (/ pi 2))(- pi ang))
  55.   ((> (* pi 1.5) ang pi)(- ang pi))
  56.   ((> (* pi 2) ang (* pi 1.5))(- (* pi 2) ang))
  57.    (T ang))
  58. )
  59. (vlax-put mtx 'AttachmentPoint 5 )
  60. (vlax-put mtx 'InsertionPoint txp)
  61. (vlax-put mtx 'Height hgt)
  62. (vlax-put mtx 'Rotation ang)
  63. (vla-update mtx)
  64. )
  65. )
  66. (princ)
  67.    )
  68. (princ "\n Start command with SCANLINE ...")
  69. (princ)
  70. ; +---------+---------+---------+---------+---------+---------+---------+ ;
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 10:51:06 | 显示全部楼层
嗨,有人能帮我吗!!
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 10:59:45 | 显示全部楼层
 
 
我认为这可能是“今天的轻描淡写”。
 
我不是故意粗鲁,但你还没有得到任何帮助,因为你的请求还没有把CADTutor当成快餐店(事实并非如此)。这是一个分享知识的地方。。。你唯一能“随心所欲”的就是你自己写的代码。
 
将来,如果你先展示一些作品,你可能会得到更及时的回复。刚接触编程,甚至不了解如何做某事(我们都是从某个地方开始的)没有错,但没有人(无论你的经验如何)喜欢leach。
 
 
 
 
我想帮助你,所以请张贴一些你尝试的例子,这样我或其他人可以更好地建议你。
 
为了让你不觉得我以任何方式拒绝了你或你的帮助请求,这里有几个“胡萝卜”供你考虑:
 
 
  1. (if (and (tblsearch "layer" (setq layerName "TL - LD - Scanlight Interconnecting Leads"))
  2.         (setq ss (ssget "_x" (list (cons 8 layerName)))))
  3. ;; ...code
  4. )

 
 
 
 
  1. (vlax-put mtx 'layer "TL - LD - Scanlight Interconnecting Dimension")

 
 
希望这有帮助!
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 11:16:28 | 显示全部楼层
谢谢你的回复-
至少现在我明白了为什么我的帖子不合适了——但对于一个没有接受过CAD培训并且在6个月前33岁才开始使用它的人来说——其中一些对我来说有点法语!
 
我相信我有一个数学头脑,能够很好地理解逻辑——只是我读的关于LISP的书越多,我就越会对参数、顺序和反向逻辑感到困惑。
 
我们公司在CAD方面不是最好的,我已经比其他用户更先进了——只是因为我想知道事情是如何运作的。
我并没有试图过滤我意识到有价值的信息和技能——我也不想把工作当成自己的工作——我要求在工作中接受培训——但没有。
我只是想改进一些东西和我们的工作方式——因为产生了很多错误,我知道这很令人沮丧,只要投入一点资金,公司就可以消除这些错误。
 
我的出发点和落脚点是将原始documnet(LISP)文件与新文件进行比较,然后查看所做的更改以及它们对代码的影响。
然后对于类似的函数,我希望能够生成一个工作的LISP。
 
我试图替换代码中的变量,但不知道如何更改顺序。
如果你能给我推荐一本书或一个有帮助的网页,我很乐意去研究。
我有太多的问题,把它们都写下来太疯狂了,我希望用前置和后置的方式来回答其中的大部分问题,而不会打扰到别人。
有没有写代码和常数列表的方法!
在这个阶段,我不了解预修复及其应用程序,即vlax-getvar等
此外,我如何预设属性,而不是“steq hgt”和(getdist。。。
我只是删除(getdist。。
然后大概使用命令设置高度设置hgt 50
 
我的问题是,我有太多的问题,我不知道从哪里开始!
我将附上LISP并用红色写下我的问题-我希望你能看到我有兴趣学习这些功能以及它们是如何工作的!
 
谢谢你的回复
 
 
  1. [size=3]; +-------+---------+---------+-----SCANLINE.lsp----+---------+--------+--------+ ;[/size]
  2. [size=3](vl-load-com)[/size]
  3. [size=3](defun C:SCANLINE (/ acsp adoc ang der ent gap midp mtx oid pline pref txp txt)[/size]
  4. [color=red][size=3]Does above set the variables for this lisp[/size][/color]
  5. [size=3]  (or adoc[/size]
  6. [size=3]      (setq adoc[/size]
  7. [size=3]                 (vla-get-activedocument[/size]
  8. [size=3]                   (vlax-get-acad-object)                                           [/size]
  9. [size=3]                   )[/size]
  10. [size=3]                )[/size]
  11. [size=3]      )[/size]
  12. [size=3]  (if (and[/size]
  13. [size=3]            (= (getvar "tilemode") 0)           [color=red]?[/color][/size]
  14. [size=3]            (= (getvar "cvport") 1)              [color=red]?[/color][/size]
  15. [size=3]            )[/size]
  16. [size=3]    (setq acsp (vla-get-paperspace adoc))[/size]
  17. [size=3]    (setq acsp (vla-get-modelspace adoc))[/size]
  18. [size=3]    )[/size]
  19. [size=3](if (and (tblsearch "layer" (setq layerName "TL - LD - Scanlight Interconnecting Leads"))[/size]
  20. [size=3]         (setq ss (ssget "_x" (list (cons 8 layerName)))))[/size]
  21. [size=3]  ;; ...code                                                         [/size]
  22. [color=red][size=3]Can you select the layer then all polylines after - just incase someone has put the wrong thing on this layer[/size][/color]
  23. [size=3]  )[/size]
  24. [size=3](if (setq ent (entsel "\nSelect polyline >>"))        [color=red]I need to select all polylines “nSelect ..[/color][/size]
  25. [size=3]    (progn[/size]
  26. [size=3](setq oid (vla-get-objectid[/size]
  27. [size=3]                (setq pline (vlax-ename->vla-object[/size]
  28. [size=3]                  (car ent))))[/size]
  29. [size=3]      )[/size]
  30. [size=3](setq midp (vlax-curve-getclosestpointto pline[/size]
  31. [size=3]                 (vlax-curve-getpointatdist pline[/size]
  32. [size=3]                   (/ (vla-get-length pline) 2)))[/size]
  33. [size=3]      )[/size]
  34. [size=3](vlax-invoke acsp 'AddCircle midp 2.0) [color=red]- don’t need this can I just remove it[/color][/size]
  35. [size=3](setq der (vlax-curve-getfirstderiv pline[/size]
  36. [size=3]                        (vlax-curve-getparamatpoint pline midp)))[/size]
  37. [size=3](if (zerop (cadr der))[/size]
  38. [size=3]           (setq ang (/ pi 2))[/size]
  39. [size=3]           (setq ang (- pi (atan (/ (car der) (cadr der)))))[/size]
  40. [size=3]         )[/size]
  41. [size=3](initget 6)[/size]
  42. [size=3](setq hgt (getdist "\nEnter text height <5.0>: ")) [color=red]- can this just be (set hgt 50))[/color][/size]
  43. [size=3](if (not hgt)(setq hgt 5.))[/size]
  44. [size=3](initget 6)                                                                      [color=red]- what is (initget 6) ??[/color][/size]
  45. [size=3](setq gap (getdist "\nEnter distance of the text offset <2.5>: ")) [/size]
  46. [color=red][size=3]- can this be (setq gap 75)[/size][/color]
  47. [size=3](if (not gap)(setq gap 2.5))                                            [color=red]- can I delete these[/color][/size]
  48. [size=3](setq txp (polar midp ang gap))[/size]
  49. [size=3](setq pref (getstring T "\nEnter label prefix <920>: ")) [/size]
  50. [size=3](if (eq "" pref)(setq pref "920"))                         [color=red]can all this just be :-[/color][/size]
  51. [size=3](setq pref (strcat pref " ("))                                            [color=red](setq pref (strcat pref “>(“))[/color][/size]
  52. [size=3](setq txt (strcat pref                                                      [color=red]I want the prefix to be a >[/color][/size]
  53. [size=3]"%<\\AcObjProp Object(%<\\_ObjId "[/size]
  54. [size=3]                          (itoa oid)[/size]
  55. [size=3]                          ">%).Length \\f "%lu2%pr2">% m)");--> number of decimals = 1[/size]
  56. [size=3])                                                                                                                             [/size]
  57. [color=red][size=3]I want it to only 1 decimal place ie 7.4m[/size][/color]
  58. [size=3](setq mtx (vlax-invoke acsp 'AddMText txp 0.0 txt)[/size]
  59. [size=3]                   )[/size]
  60. [size=3](setq ang (- ang (/ pi 2)))[/size]
  61. [size=3](setq ang (cond                                     [/size]
  62. [size=3]              ((> pi ang (/ pi 2))(- pi ang))[/size]
  63. [size=3]              ((> (* pi 1.5) ang pi)(- ang pi))[/size]
  64. [size=3]              ((> (* pi 2) ang (* pi 1.5))(- (* pi 2) ang))[/size]
  65. [size=3]               (T ang))[/size]
  66. [size=3]                        )[/size]
  67. [size=3](vlax-put mtx 'AttachmentPoint 5 )[/size]
  68. [size=3](vlax-put mtx 'InsertionPoint txp)[/size]
  69. [size=3](vlax-put mtx 'Height hgt)[/size]
  70. [size=3](vlax-put mtx 'Rotation ang)[/size]
  71. [size=3](vla-update mtx)[/size]
  72. [size=3](vlax-put mtx 'layer "TL - LD - Scanlight Interconnecting Dimension") - [color=red]does this go here?[/color][/size]
  73. [size=3])[/size]
  74. [size=3]  )[/size]
  75. [size=3]  (princ)[/size]
  76. [size=3]    )[/size]
  77. [size=3](princ "\n Start command with SCANLINE ...")[/size]
  78. [size=3](princ)[/size]
  79. [size=3]; +---------+---------+---------+---------+---------+---------+---------+ ;[/size]
回复

使用道具 举报

14

主题

719

帖子

706

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 11:30:07 | 显示全部楼层
我可以推荐Afralisp吗。net作为一个良好的起点。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 17:46 , Processed in 0.320788 second(s), 62 queries .

© 2020-2025 乐筑天下

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