乐筑天下

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

[编程交流] Lisp:动态块管理

[复制链接]

44

主题

139

帖子

95

银币

后起之秀

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

铜币
221
发表于 2022-7-5 19:59:45 | 显示全部楼层 |阅读模式
你好,
 
我正在开发一个简单的程序来绘制抗剪钢筋,但我的砌块有一些问题。
它们是四个:矩形柱、圆形柱、墙端和墙角)。
 
问题是我需要在它们周围绘制控制部分,这使得我的块在用lisp控制它们时不可预测。
 
我在矩形块中填充了大量的余约束,这使得它变得很慢(有时是不可预测的)。
我尝试了其他解决方案,但仍然没有找到避免它的方法。例如,我必须做一个_每次更改后与其他块一起重新生成。
 
  1. (DEFUN inserisci_prop_dyn (/) ;this funcion will change the dynamic proprieties
  2. (putdynpropvalue obj "d" d) ; it changes the offset of the control section from the column/wall
  3. (COND ((= NOME_PIL "Pilastro Rettangolare") ; rectangular column
  4.         
  5. (COMMAND "_.regen")
  6.         (putdynpropvalue obj "c1" c1) ;width
  7.         ;(COMMAND "_.regen")
  8.         (putdynpropvalue obj "c2" c2) ; height
  9.         ;(COMMAND "_.regen")
  10.         (putdynpropvalue obj "cb1" c1) ; it makes even the line that controls the distance from the edge of the slab with the width
  11.         (putdynpropvalue obj "cb2" c1) ; for edge column there are 2 parameters for that
  12.         
  13.         (putdynpropvalue obj "cs1" c1) ;this is the same concept but for the edge column
  14.         (putdynpropvalue obj "cs2" c2)
  15.         (putdynpropvalue obj "cs3" c1) ;cs3 and cs4 are for interior edge column
  16.         (putdynpropvalue obj "cs4" c2)
  17.         
  18.         (putdynpropvalue obj "ang_rot" ang_rot) ;that change the rotation of the block
  19.         
  20.        )
  21.        ((= NOME_PIL "Pilastro Circolare") ;circular column
  22.         (COMMAND "_.regen")
  23.         (putdynpropvalue obj "c1" c1)
  24.         (putdynpropvalue obj "cb1" (/ c1 2))
  25.         (putdynpropvalue obj "cb2" (/ c1 2))
  26.         
  27.         (putdynpropvalue obj "cs1" (/ c1 2))
  28.         (putdynpropvalue obj "cs2" (/ c1 2))
  29.         (putdynpropvalue obj "cs3" (/ c1 2))
  30.         (putdynpropvalue obj "cs4" (/ c1 2))
  31.         
  32.         
  33.         
  34.         (putdynpropvalue obj "ang_rot" ang_rot)
  35.        )
  36.        ((= NOME_PIL "Angolo Interno") ;wall edge
  37.         (putdynpropvalue obj "c1" c1)
  38.         (putdynpropvalue obj "c2" c2)
  39.         (COMMAND "_.regen")
  40.         (SETQ a (/ (* 1.5 d) 100)
  41.               b (/ (* 1.5 d) 100)
  42.         )
  43.         (putdynpropvalue obj "a" a)
  44.         (putdynpropvalue obj "b" b)
  45.         (putdynpropvalue obj "ang_rot" ang_rot)
  46.         (COMMAND "_.regen")
  47.       
  48.        )
  49.       ((= NOME_PIL "Fine Parete") ;wall end
  50.         (putdynpropvalue obj "c1" c1)
  51.         ;(putdynpropvalue obj "c2" c2)
  52.         (SETQ a (MIN c1 (- (* 3 d) (* 0.5 c1)))
  53.               b (MIN c1 (- (* 3 d) (* 0.5 c1)))
  54.         )
  55.         (putdynpropvalue obj "a" a)
  56.         (putdynpropvalue obj "b" b)
  57.         (putdynpropvalue obj "ang_rot" ang_rot)
  58.        )
  59. )
  60. (putdynpropvalue obj "Vista" vista) ;each block can fit each situation: interior, edge, corner. With this line I'll set the right position
  61. (COMMAND "_.regen")
  62. ;(IF (AND (= nome_pil "Fine Parete") (= stato_inversione 1)) ;just to flip it, don't mind about that now
  63. ;  (toggleflipstate obj)
  64. ;  )
  65.    
  66. )

 
我将在那里编写函数“putdynpropvalue”:
 
  1. ;;put dynamic property by property name
  2. (DEFUN putdynpropvalue (obj name value / props names)
  3. (SETQ props (VLAX-INVOKE obj 'getdynamicblockproperties)
  4.        names (MEMBER name (MAPCAR 'VLA-GET-PROPERTYNAME props))
  5. )
  6. (VLAX-PUT (NTH (- (LENGTH props) (LENGTH names)) props) 'Value value)
  7. )   

 
我在我的语言论坛上(我来自意大利)寻求帮助,但我没有得到任何帮助。。
 
我不熟悉动态积木,也许我犯了一些错误。。有人能告诉我如何解决这种情况吗?
 
Pilastro Rettangolare。这是矩形柱,看一看,你就会明白代码了
 
谢谢
丹尼斯
回复

使用道具 举报

44

主题

139

帖子

95

银币

后起之秀

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

铜币
221
发表于 2022-7-5 21:46:58 | 显示全部楼层
您好!
为了让它更清楚,我录制了一段关于我的积木问题的短片。正如您所看到的,墙端完全有缺陷,矩形柱需要很多时间才能插入到图形中(并且存在一些问题)。
 
精细帕雷特。图纸
 
 
有什么建议吗?
 
谢谢,丹尼斯
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 01:17 , Processed in 0.491488 second(s), 56 queries .

© 2020-2025 乐筑天下

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