乐筑天下

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

[编程交流] 翻转参数,动态块

[复制链接]

16

主题

50

帖子

34

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
80
发表于 2022-7-5 17:37:34 | 显示全部楼层 |阅读模式
有人知道使用auto-lisp-visual lisp切换指定翻转参数的干净方法吗?
 
我使用getdynprops、getdynpropvalue、PutdynnPropValue[由Jeff Mishler根据Steve Doman、Herman Mayfarth和Tony Tanzillo的代码编写]来满足大多数动态块更改需求,但我无法实现,它们似乎不适用于flip参数。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 17:43:48 | 显示全部楼层
考虑以下功能:
  1. [color=GREEN];; Toggle Flip State  -  Lee Mac[/color]
  2. ([color=BLUE]defun[/color] toggleflipstate ( obj )
  3.    ([color=BLUE]if[/color]
  4.        ([color=BLUE]and[/color]
  5.            ([color=BLUE]=[/color] [color=MAROON]"AcDbBlockReference"[/color] ([color=BLUE]vla-get-objectname[/color] obj))
  6.            ([color=BLUE]=[/color] [color=BLUE]:vlax-true[/color] ([color=BLUE]vla-get-isdynamicblock[/color] obj))
  7.        )
  8.        ([color=BLUE]vl-some[/color]
  9.            ([color=BLUE]function[/color]
  10.                ([color=BLUE]lambda[/color] ( p )
  11.                    ([color=BLUE]if[/color] ([color=BLUE]equal[/color] '(0 1) ([color=BLUE]vlax-get[/color] p 'allowedvalues)) [color=GREEN];; likely to be a flip parameter[/color]
  12.                        ([color=BLUE]vla-put-value[/color] p ([color=BLUE]vlax-make-variant[/color] ([color=BLUE]-[/color] 1 ([color=BLUE]vlax-get[/color] p 'value)) [color=BLUE]vlax-vbinteger[/color]))
  13.                    )
  14.                )
  15.            )
  16.            ([color=BLUE]vlax-invoke[/color] obj 'getdynamicblockproperties)
  17.        )
  18.    )
  19. )
用法:
示例程序:
  1. ([color=blue]defun[/color] c:flip ( [color=blue]/[/color] obj )
  2.    ([color=blue]if[/color] ([color=blue]setq[/color] obj ([color=blue]car[/color] ([color=blue]entsel[/color])))
  3.        (toggleflipstate ([color=blue]vlax-ename->vla-object[/color] obj))
  4.    )
  5.    ([color=blue]princ[/color])
  6. )
  7. ([color=blue]vl-load-com[/color]) ([color=blue]princ[/color])
回复

使用道具 举报

16

主题

50

帖子

34

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
80
发表于 2022-7-5 17:50:43 | 显示全部楼层
李·麦克,
我有多个翻转状态。有没有办法把我想设置的名称和参数传递给它?有些是用户可以访问的,有些不是,因为它们是由查找参数控制的。
 
183736qo3awo55anv1r11z.png
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 17:56:45 | 显示全部楼层
 
当然,通常可以使用我的Set Dynamic Property Value函数。
 
对于您的情况:
  1. (LM:SetDynamicPropValue <VLA-Object> "UB_FLIP" 1)

或:
  1. (LM:SetDynamicPropValue <VLA-Object> "UB_FLIP" 0)
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 18:00:23 | 显示全部楼层
您好,我在设置翻转参数方面有一些问题。我使用了您的“设置动态属性值”代码:
 
运行脚本后出现错误:
 
  1. 6

 
我的翻转参数名称:
翻转状态0
翻转状态1
 
我的动态块名称:
F\u MOD\u DIP\u SW\u水平
 
我需要一些帮助。。。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:08:28 | 显示全部楼层
第一个参数必须是有效的VLA对象——有关如何向函数提供VLA对象,请参阅我前面的示例程序。
回复

使用道具 举报

39

主题

180

帖子

141

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
195
发表于 2022-7-5 18:15:17 | 显示全部楼层
李,
我知道这是一个老线程,但是,有没有办法让代码通过窗口选择来翻转多个块?
 
  1. ([color=blue]defun[/color] c:flip ( [color=blue]/[/color] obj )
  2.    ([color=blue]if[/color] ([color=blue]setq[/color] obj ([color=blue]car[/color] ([color=blue]entsel[/color])))
  3.        (toggleflipstate ([color=blue]vlax-ename->vla-object[/color] obj))
  4.    )
  5.    ([color=blue]princ[/color])
  6. )
  7. ([color=blue]vl-load-com[/color]) ([color=blue]princ[/color])
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:16:08 | 显示全部楼层
 
当然可以-请尝试以下操作:
从这里切换翻转状态功能。
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 18:22:09 | 显示全部楼层
李,
做翻转动作。lsp程序仅翻转遇到的第一个翻转参数?如果动态块中定义了多个翻转参数,该怎么办?
回复

使用道具 举报

39

主题

180

帖子

141

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
195
发表于 2022-7-5 18:28:50 | 显示全部楼层
李,
 
非常感谢!!!!
 
布瑞恩
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 03:04 , Processed in 0.965394 second(s), 85 queries .

© 2020-2025 乐筑天下

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