找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2786|回复: 13

[LISP函数]:(vla-put-tagstring obj newtag)执行的结果有错!

[复制链接]
发表于 2004-1-3 03:41:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
(vla-put-tagstring obj newtag)执行的结果有错!
我创建了一个带有属性的块.
其中一个属性:其标志为T1提示为 P1属性值为 V1.
编程用(vla-get-tagstring obj)提取其属性标志, 结果为T1无误.
但是用(vla-put-tagstring obj "T2")修改标志却修改了属性提示(P1变为T1!), 有朋友遇到这种情况吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-1-3 07:05:21 | 显示全部楼层

Re: [LISP函数]:(vla-put-tagstring obj newtag)执行的结果有错!

最初由 lsjjm 发布
[B](vla-put-tagstring obj newtag)执行的结果有错!
我创建了一个带有属性的块.
其中一个属性:其标志为T1提示为 P1属性值为 V1.
编程用(vla-get-tagstring obj)提取其属性标志, 结果为T1无误.
但是用(vla-put-tagst... [/B]

没有这种情况
_$ (setq obj (vlax-ename->vla-object (entlast)))
#< VLA-OBJECT IAcadBlockReference 01766a34 >
_$ (setq attobj (vlax-safearray->list(vlax-variant-value (vla-getattributes obj))))
(#< VLA-OBJECT IAcadAttributeReference 016b1124 >)
_$ (vla-get-tagstring (car attobj))
"A1"
_$
_$ (vla-put-tagstring (car attobj) "B1")
nil
_$
_$
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-1-3 13:15:37 | 显示全部楼层
2楼:是呀,我也认为不应该。 双击属性结果和你的一样;但用ATE属性对话框显示的提示却被改变了?
3楼:哪写得不正确, 请示?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-1-3 16:14:28 | 显示全部楼层
2樓是修改BLOCKREF中的attributeRef

你要的是修改BLOCKDEF中的attribute的TagString


Specifies the tag string of the object.

Signature

object.TagString

object        Attribute, AttributeRef, PopupMenu, PopupMenuItem,
Toolbar, ToolbarItem
The object or objects this property applies to.
TagString        String; read-write (read-only for PopupMenu and Toolbar objects)
The tag string of the object.

Remarks

Attribute, AttributeRef: This string identifies each occurrence of the attribute. Enter any characters except spaces or exclamation points. AutoCAD changes lowercase letters to uppercase.
PopupMenu, PopupMenuItem, Toolbar, ToolbarItem: A tag, or name tag, is a string consisting of alphanumeric and underscore (_) characters. This string uniquely identifies the item within a given menu file. This string is automatically assigned when the object is created and is used internally by AutoCAD for toolbar and menu identification. Most developers do not need this level of identification and can safely ignore the TagString property.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-1-3 17:23:41 | 显示全部楼层
最初由 LUCAS 发布
[B]2樓是修改BLOCKREF中的attributeRef
你要的是修改BLOCKDEF中的attribute的TagString... [/B]


那么请教,如何解决我的问题?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-1-4 01:03:47 | 显示全部楼层
最初由 lsjjm 发布
[B]

那么请教,如何解决我的问题? [/B]

为什么要改块定义本身呢?

  1. (vla-item (vla-get-blocks
  2.             (vla-get-activedocument (vlax-get-acad-object))
  3.           )
  4.           blockname
  5. )
复制代码

得到块定义,用Vlax-for修改其中的实体。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-1-4 03:43:47 | 显示全部楼层
最初由 eachy 发布
[B]
为什么要改块定义本身呢?[code]
(vla-item (vla-get-blocks
            (vla-get-activedocument (vlax-get-acad-object))
          )... [/B]


谢谢,可是你还是没有解决我的原问呀?即:

(vla-put-tagstring obj "T2")修改标志却修改了属性提示(P1变为T1!)?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-1-4 08:15:04 | 显示全部楼层
最初由 lsjjm 发布
[B]

谢谢,可是你还是没有解决?.. [/B]

obj -> blockdef
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-1-4 09:13:48 | 显示全部楼层
最初由 eachy 发布
[B]obj -> blockdef [/B]

你怎么不明白我说的话?
我是说:为什么:

(vla-get-tagstring obj)提取其属性标志, 结果为T1无误.
(vla-put-tagstring obj "T2") 修改标志却修改了属性提示(P1变为T1!)???
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-1-4 11:57:17 | 显示全部楼层
最初由 lsjjm 发布
[B]
你怎么不明白我说的话?
我是说:为什么:

(vla-get-tagstring obj)提取其属性标志, 结果为T1无误.
(vla-put-tagstring obj "T2") 修改标志却... [/B]

我的意思是你修改的仅是Blockreference(块引用),如果要改成你想要的模式需要修改Blockdef(块定义),然后执行Regen或者对Blockref Update。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-1-4 13:16:58 | 显示全部楼层
越说越糊涂了?!
不管它是Blockreference还是Blockdef, 我是说如果一个activex object有tagstring属性(特性)的话,(vla-get-tagstring...就可以获得它,如果不是只读,那么(vla-put-tagstring ...
也能修改它,至少--执行一个函数或命令(方法), 如果不能执行的话,应该返回错误信息。可是为什么要修改标志tagstring 却修改了提示promptstring?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-1-5 08:14:08 | 显示全部楼层
因為AttributeReference Object沒有promptstring性質,所以它會把tagstring作為promptstring,即AttributeReference中的tagstring其實=promptstring, eattedit對話中的提示是從Attribute中promptstring性質而來,比對eattedit & battman兩對話框可更了解中關係

幫助中說明:
Specifies the prompt string for an attribute.

Signature

object.PromptString

object        Attribute
The object or objects this property applies to.
PromptString        String; read-write
The prompt string for the attribute.

Remarks

This string appears when a block containing this attribute is inserted. The default for this string is the TagString property. Entering acAttributeModeConstant
for the Mode property disables the prompt.




注意:The default for this string is the TagString property.

因為AttributeReference Object沒有promptstring性質,所以它會把tagstring作為promptstring
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2004-1-6 00:23:59 | 显示全部楼层
有道理呀,插入进去以后就不要prompt了,只要块定义里有就行了,它就没必要在insert中作记录.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 418个

财富等级: 日进斗金

发表于 2018-9-12 20:31:49 | 显示全部楼层
正好学习一下,呵呵
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-23 20:56 , Processed in 0.262096 second(s), 58 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表