明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1760|回复: 3

[基础] [求助]如何给图形或文字加上属性 已解决

[复制链接]
发表于 2010-10-14 22:52 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2010-10-20 14:10:00 编辑

   在作图时,往往需要给图块或者文字加上属性。

  例如:好像花圃符号,鼠标放在那里,会显示————实体代码 215400  实体名称 花圃

  像路面材料的文字注记,水泥,鼠标放在那里,会显示————实体代码 160009  实体名称 交通类说明注记

  请问在lsp中加属性的语句该如何写?

  望高手指教

  在此先谢了

 

 

 已解决

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2010-10-15 09:18 | 显示全部楼层
  1. ;;;===================================================================
  2. ;;; (gxl-AX:AddAtt objBlock Height  Mode  $Prompt  InsertionPoint  Tag  Value) 增加属性定义
  3. ;|参数:
  4.   Mode   acAttributeModeNormal 0 无选定的属性模式,可见
  5.          acAttributeModeInvisible 1 不可见
  6.         acAttributeModeConstant 2  固定
  7.         acAttributeModeVerify 4  验证
  8.         acAttributeModePreset 8  预置
  9. |;
  10. (defun gxl-AX:AddAtt (objBlock Height  Mode  $Prompt  InsertionPoint  Tag  Value)
  11.   (vla-AddAttribute objBlock  Height  Mode  $Prompt  (vlax-3d-point InsertionPoint)  Tag  Value)
  12.   )
  13. ;;;用法:假设图中已有块定义“花圃”,要添加属性“实体代码”,默认值为""
  14. ;;;获取块定义"花圃"对象
  15. (setq obj (vla-get-block (vla-get-Blocks (vla-get-activedocument(vlax-get-acad-object))) "花圃"))
  16. ;;;块添加属性定义
  17. (gxl-AX:AddAtt obj 1  0  "实体代码"  '(0 0 0)  "实体代码"  "")
  18. ;;;在图形中插入块
  19. ;;;====================================ACTIVEX方法=============================================
  20. ;;;插入块
  21. ;;;(gxl-AX:InsertBlock InsPt Name Xscale Yscale ZScale Rotation) 插入图块,返回BlockREf
  22. ;;;(gxl-AX:InsertBlock  (getpoint) "A1" 1 1 1 0)
  23. (defun gxl-AX:InsertBlock (InsPt Name Xscale Yscale ZScale Rotation)
  24.   (vla-InsertBlock (vla-get-modelspace(vla-get-activedocument(vlax-get-acad-object))) (vlax-3d-point InsPt) Name Xscale Yscale ZScale Rotation)
  25.   )
  26. ;;;块出入图形中
  27. (setq obj (gxl-AX:InsertBlock (getpoint "\n插入点") "花圃" 1 1 1 0))
  28. ;;;设置属性"实体代码"值为"100100"
  29. (mapcar
  30.     '(lambda (Att)
  31.        (if (= (vla-get-TagString Att) "实体代码")
  32. (vla-put-TextString Att "100100")
  33.        )
  34.      )
  35.     (vlax-invoke Obj "GetAttributes")
  36.   )
 楼主| 发表于 2010-10-15 19:06 | 显示全部楼层

谢谢Gu_xl

我等会试试。

学习了。

谢谢

 

 楼主| 发表于 2010-10-16 07:35 | 显示全部楼层

 

 由于刚学习编辑lsp,因此您给出的看不懂。

现在我附上编辑的一些语句,麻烦能否帮我修改?或指教要如何去修改它?

请高手指教

谢谢


看能否在输入时给它一个属性:实体代码 140009  实体名称 居民地名称标记

(defun c:bsx1(/ ss str p0 cl texth)   ;标属性

  (command "color" "bylayer")
  (setq texth "1.25")
  (setq cl (getvar "clayer"))
  (princ
    "\n1.砼/2.砼2/3.砼3/4.砖/5.砖2/6.砖3/7.简/8.破/9.施工地
       \n/10.空地/<last>"
  )
  (initget (+ 2 4))
  (setq ss (getint))
  (setvar "clayer" "jmd")
  (if (= ss nil)
    (setq ss dldw_ss)
  )
  (if (and (= ss nil) (= dldw_ss nil))
    (setq ss 2)
  )
  (if (/= ss nil)
    (setq dldw_ss ss)
  )
  (cond
    ((= ss 1) (setq str "砼"))
    ((= ss 2) (setq str "砼2"))
    ((= ss 3) (setq str "砼3"))
    ((= ss 4) (setq str "砖"))
    ((= ss 5) (setq str "砖2"))
    ((= ss 6) (setq str "砖3"))
    ((= ss 7) (setq str "简"))
    ((= ss 8) (setq str "破"))
    ((= ss 9) (setq str "施工地"))
    ((= ss 10) (setq str "空地"))    
    (t (setq str ""))
  )

 
  (COMMAND "_STYLE" "FZXDXJT" "方正细等线简体" "0" "1" "0" "N" "N")
  ;(COMMAND "_STYLE" "细等线体" "方正细等线简体" "0" "1" "0" "N" "N")
  ;(COMMAND "_STYLE" "正等线体" "宋体" "0" "1" "0" "N" "N")
  (setq p0 (getpoint "\nPoint:"))
  (command "text" "s" "FZXDXJT" "j" "mc" p0 texth "0" str)
  (command "chprop" "l" "" "t" "3000000.0" "") 
  (setvar "clayer" cl)
)

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-6-15 08:39 , Processed in 0.178717 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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