乐筑天下

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

[编程交流] Lisp例程帮助?

[复制链接]

2

主题

4

帖子

2

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 18:37:06 | 显示全部楼层 |阅读模式
谁能帮我运行一个旧的lisp例程(我爸爸20-30年前写的)?我目前正在运行AutoCAD Civil 3D 2015。我爸爸在2000年就不再和CAD玩了。在AutoCAD C3D 2010中,我可以实现这一点。
 
我在autocad的windows中拖放了该命令。没有错误。我插入了两个街区“PARKN”和“PARKS”。然后我在命令行中输入DRAWPARK。然后,我选择了一条多段线(我试图将plinetype更改为0和1),并得到了这样的响应“错误:错误的参数类型:lentyp nil”。有人知道怎么读这篇文章,可能会告诉我什么吗?我在谷歌上搜索了这个,现在我又回到了cadtutor。net获取更多帮助。提前感谢!以下是文本:
 
(DEFUN C:DRAWPARK(/)
(如果(=nil(tblsearch“block”“parkn”))
(程序
(命令“insert”“parkn”(列表0 0)1 1 0)
 
(命令“erase”(entlast)“”)
); 结束程序
); 如果结束
(如果(=零(tblsearch“block”“parks”))
(程序
(命令“insert”“parks”(列表0 0)1 1 0)
(命令“erase”(entlast)“”)
); 结束程序
); 如果结束
(setq ent(entget(car(setq poly(entsel“Select Polyline:”))))
(setq en(entnext(cdr(assoc-1 ent)))
(setq ed(entget en))
(setq pt1(cdr(assoc 10 ed)))
;(x2-x1)*(y3-y1)-(y2-y1)*(x3-x1)
(setq pt2(cadr poly))
(setq pt3(获取点“哪一边?”))
(setq)
x2(汽车pt2)
x1(汽车pt1)
x3(pt3车)
y1(cadr pt1)
y2(cadr pt2)
y3(cadr pt3)
)
(setq left(*(-x1 x2)(-y1 y3)))
(setq right(*(-y1 y2)(-x1 x3)))
(setq rslt(-左-右))
(如果
(
(setq哪个“parkn”)
(setq哪个“公园”)
)
(setq x1 nil x2 nil x3 nil y1 nil y2 nil y3 nil left nil right nil rslt nil)
(setq pt1 nil pt2 nil pt3 nil ent nil en nil en2 nil ed nil ed2 nil)
;(menucmd“p0=parkpop”)
;(menucmd“p0=*”)
(setq howmany(getint“多少个空格:”))
;(menucmd“p0=pop0”)
(
命令“divide”poly“b”哪个“y”多少)
(命令“erase”poly“”)
(命令“redraw”)
(普林斯)
)
回复

使用道具 举报

20

主题

338

帖子

323

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-5 19:30:47 | 显示全部楼层
问题似乎就在这里
 
  1. (setq en (entnext (cdr (assoc -1 ent))))

 
如果绘图是全新的(就像我测试此代码时一样),entnext返回nil。
 
我创建了一个新的图形,创建了两个块“parks”和“parkn”,绘制了一条多段线并运行了代码。正如你所说,代码出错了。然后,我绘制了另一条多段线,并重新运行代码,选择与之前相同的多段线。然后代码执行到最后。
 
由于不知道代码的意图,我无法提供修复。
 
当做
 
hippe013
 
P、 你应该用代码标签包装你的代码。
 
P、 我们试着用“MEASURE”命令来代替。(几乎做了同样的事情。)
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 20:02:54 | 显示全部楼层
只是一个建议,在未来这已经提到过,现在可能有42个“帮助这个Lisp程序”的帖子。“停车Lisp程序的问题”是更好的描述。
 
你的问题的答案是神奇的停车场。dwg是作为CIV3D的一部分提供的示例dwg,它包含了各种动态停车场布局工具。
 
另一个
  1. ; draw car park bays at multi angles
  2. ; By Alan H 2011
  3. (princ "\n ")
  4. (princ "\nTo use type npark90 or npark45 or npark30 or npark60 :")
  5. (setq oldsnap (getvar "osmode"))
  6. (setq oldlayer (getvar "clayer"))
  7. (setvar "cmdecho" 0)
  8. (defun lw ()
  9.    (prompt "\nPlease enter kerb length < ")
  10.    (prin1 width)
  11.    (prompt ">: ")
  12.    (setq newhoriz (getreal))
  13.    (if (= newhoriz nil)
  14.      (princ)
  15.      (setq width newhoriz)
  16.            )
  17.    (prompt "\nPlease enter kerb length < ")
  18.    (prin1 length)
  19.    (prompt ">: ")
  20.    (setq newhoriz (getreal))
  21.    (if (= newhoriz nil)
  22.      (princ)
  23.      (setq length newhoriz)
  24.    )
  25. (setq pt1 (getpoint "\npick 1st point to place start : "))
  26. (setq pt2 (getpoint "\nPick 2nd or end point for orientation"))
  27. (setvar "osmode" 0)
  28. (setq pt7 (getpoint "\Pick pt on car park side : "))
  29. )
  30. (defun dpark ()
  31. (command "pline" pt1 pt3 pt4 pt5 "c")
  32. (setq distp1p3 (distance pt1 pt3)) ; length of bay along kerb
  33. (setq n (- (fix (/ (distance pt1 pt2) distp1p3))1))
  34. ; no of car park bays
  35. (repeat n  
  36. (command "copy" "L" "" pt1 pt3)
  37. )
  38. (setvar "osmode" oldsnap)
  39. (setvar "clayer" oldlayer)
  40. )
  41. (defun c:npark90 ()
  42. (setq width 2.5)
  43. (setq length 4.
  44. (lw)
  45. (setq ang (angle pt1 pt2))
  46. (setq ang5 (angle pt2 pt7))
  47. (setq diffang (- ang ang5))
  48. (if (> diffang 1.5707)
  49. (setq ang2 (- ang 1.570796))
  50. (setq ang2 (+ ang 1.570796))
  51. )
  52. (setq ang3 (+ ang 3.1415926))
  53. (setq ang4 (- ang 1.570796))
  54. (setq pt3 (polar pt1 ang length))
  55. (setq pt4 (polar pt3 ang2 width))
  56. (setq pt5 (polar pt4 ang3 length))
  57. (dpark)
  58. )
  59. (defun c:npark45 ()
  60. (setq width 2.5)
  61. (setq length 5.1)
  62. (lw)
  63. (setq length (* 1.414213 length)) ; fudge factor sq root 2 for 45
  64. (setq width (* 1.414213 width))
  65. (setq ang (angle pt1 pt2))
  66. (setq ang5 (angle pt2 pt7))
  67. (setq diffang (- ang ang5))
  68. (if (> diffang 1.5707)
  69. (setq ang2 (- ang 0.7853981))
  70. (setq ang2 (+ ang 0.7853981))
  71. )
  72. (setq ang3 (angle pt2 pt1))
  73. (setq ang4 (- ang 0.7853981))
  74. (setq pt3 (polar pt1 ang width))
  75. (setq pt4 (polar pt3 ang2 length))
  76. (setq pt5 (polar pt4 ang3 width))
  77. (dpark)
  78. (princ)
  79. )
  80. (defun c:npark30 ()
  81. (setq width 2.5)
  82. (setq length 4.5)
  83. (lw)
  84. (setq length (* 2.0 length))
  85. (setq width (* 2.0 width))
  86. (setq ang (angle pt1 pt2))
  87. (setq ang5 (angle pt2 pt7))
  88. (setq diffang (- ang ang5))
  89. (if (> diffang 1.5707)
  90. (setq ang2 (- ang 0.52359877))
  91. (setq ang2 (+ ang 0.52359877))
  92. )
  93. (setq ang3 (angle pt2 pt1))
  94. (setq ang4 (- ang 0.52359877))
  95. (setq pt3 (polar pt1 ang width))
  96. (setq pt4 (polar pt3 ang2 length))
  97. (setq pt5 (polar pt4 ang3 width))
  98. (dpark)
  99. (princ)
  100. )
  101. (defun c:npark60 ()
  102. (setq width 2.5)
  103. (setq length 5.3)
  104. (lw)
  105. (setq length (* 1.1176 length)) ; fudge factor approx 1.16
  106. (setq width (* 1.1548 width))
  107. (setq ang (angle pt1 pt2))
  108. (setq ang5 (angle pt2 pt7))
  109. (setq diffang (- ang ang5))
  110. (if (> diffang 1.5707)
  111. (setq ang2 (- ang 1.0471975))
  112. (setq ang2 (+ ang 1.0471975))
  113. )
  114. (setq ang3 (angle pt2 pt1))
  115. (setq ang4 (- ang 1.0471975))
  116. (setq pt3 (polar pt1 ang width))
  117. (setq pt4 (polar pt3 ang2 length))
  118. (setq pt5 (polar pt4 ang3 width))
  119. (dpark)
  120. (princ)
  121. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 13:20 , Processed in 0.669363 second(s), 58 queries .

© 2020-2025 乐筑天下

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