乐筑天下

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

[编程交流] 定位到属性

[复制链接]

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:05:51 | 显示全部楼层
你修改过我的代码吗?
 
我不知道这个错误是从哪里来的。
回复

使用道具 举报

27

主题

126

帖子

99

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-6 10:10:16 | 显示全部楼层
我唯一补充的是
 
(princ(strcat“\n STATION“s”)
 
在最后一个普林斯之前。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:14:03 | 显示全部楼层
这就是导致错误的原因,因为“s”不是字符串。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:14:59 | 显示全部楼层
在使用我的“GetDynamicProperties”函数从这里查询附加的示例块后,我注意到它甚至没有一个名为“STA”的属性,这可能是没有赋值的原因。
回复

使用道具 举报

27

主题

126

帖子

99

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-6 10:20:53 | 显示全部楼层
啊,我现在明白了。我补充说,只是为了看到价值的视觉验证。抱歉给你带来了困惑。
 
现在它仍然回到了最初的问题,因为没有为STA属性标记输入值,即使有更新的代码。
回复

使用道具 举报

27

主题

126

帖子

99

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-6 10:21:29 | 显示全部楼层
是的,这是一个属性标签。。。我认为动态属性适用于任何属性,而不仅仅是动态对象,即使标记位于动态块中。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:24:40 | 显示全部楼层
 
不,属性完全是另一回事。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:28:09 | 显示全部楼层
试试这个:
 
  1. (defun c:test ( / blocks i l o s ss ) (vl-load-com)
  2. (setq blocks
  3.   '(
  4.      "ANCHOR-STA"
  5.      "CATCH BASIN-STA"
  6.      "CONC. POLE-STA"
  7.      "ELEC TRANSFORMER-STA"
  8.      "FIBER MARKER TUBE-STA"
  9.      "FIRE HYDRANT-STA"
  10.      "GRATE INLET-STA"
  11.      "HANDHOLE-STA"
  12.      "HANDHOLE PROP-STA"
  13.      "MAILBOX-STA"
  14.      "MANHOLE-STA"
  15.      "PARKING METER-STA"
  16.      "POLE-STA"
  17.      "PROPERTY PIN-STA"
  18.      "SIGN-STA"
  19.      "STEEL POLE-STA"
  20.      "STEEL POST-STA"
  21.      "STREET LIGHT-STA"
  22.      "TEL PED-STA"
  23.      "TEST PIT-STA"
  24.      "TRAFFIC CONTROL BOX-STA"
  25.      "TRAFFIC POLE-STA"
  26.      "TRAFFIC SIGNAL-STA"
  27.      "TREE-STA"
  28.      "VERIZON MH-STA"
  29.      "VALVE-STA"
  30.      "WATER METER-STA"
  31.    )
  32. )
  33. (if
  34.    (and
  35.      (setq l
  36.        (LM:Select "\nSelect Running Line: "
  37.         '(lambda ( x )
  38.            (not
  39.              (vl-catch-all-error-p
  40.                (vl-catch-all-apply 'vlax-curve-getendparam (list x))
  41.              )
  42.            )
  43.          )
  44.          entsel
  45.        )
  46.      )
  47.      (princ "\nSelect Dynamic Blocks: ")
  48.      (setq ss
  49.        (ssget "_:L"
  50.          (list '(0 . "INSERT") '(66 . 1)
  51.            (cons 2
  52.              (apply 'strcat (cons "`*U*" (mapcar '(lambda ( s ) (strcat "," s)) blocks)))
  53.            )
  54.          )
  55.        )
  56.      )
  57.    )
  58.    (repeat (setq i (sslength ss))
  59.      (if
  60.        (and
  61.          (member
  62.            (strcase
  63.              (vlax-get-property (setq o (vlax-ename->vla-object (ssname ss (setq i (1- i)))))
  64.                (if (vlax-property-available-p o 'EffectiveName) 'EffectiveName 'Name)
  65.              )
  66.            )
  67.            blocks
  68.          )
  69.          (setq s
  70.            (vlax-curve-getdistatpoint l
  71.              (vlax-curve-getclosestpointto l (vlax-get o 'insertionpoint))
  72.            )
  73.          )
  74.        )
  75.        (LM:SetAttributeValue o "STA" (vl-string-subst "+" "." (rtos (/ s 100.) 2 2)))
  76.      )
  77.    )
  78. )
  79. (princ)
  80. )
  81. ;;----------------=={ Set Attribute Value }==-----------------;;
  82. ;;                                                            ;;
  83. ;;  Populates the first attribute matching the tag specified  ;;
  84. ;;  found within the block supplied with the value specified, ;;
  85. ;;  if present.                                               ;;
  86. ;;------------------------------------------------------------;;
  87. ;;  Author: Lee Mac, Copyright © 2010 - www.lee-mac.com       ;;
  88. ;;------------------------------------------------------------;;
  89. ;;  Arguments:                                                ;;
  90. ;;  block - VLA Block Reference Object                        ;;
  91. ;;  tag   - Attribute TagString                               ;;
  92. ;;  value - Value to which the Attribute will be set          ;;
  93. ;;------------------------------------------------------------;;
  94. ;;  Returns:  Value the attribute was set to, else nil        ;;
  95. ;;------------------------------------------------------------;;
  96. (defun LM:SetAttributeValue ( block tag value ) (setq tag (strcase tag))
  97. (vl-some
  98.    (function
  99.      (lambda ( attrib )
  100.        (if (eq tag (strcase (vla-get-TagString attrib)))
  101.          (progn (vla-put-TextString attrib value) value)
  102.        )
  103.      )
  104.    )
  105.    (vlax-invoke block 'GetAttributes)
  106. )
  107. )
  108. ;;---------------------=={ Select if }==----------------------;;
  109. ;;                                                            ;;
  110. ;;  Continuous selection prompts until a predicate function   ;;
  111. ;;  is validated                                              ;;
  112. ;;------------------------------------------------------------;;
  113. ;;  Author: Lee Mac, Copyright © 2011 - www.lee-mac.com       ;;
  114. ;;------------------------------------------------------------;;
  115. ;;  Arguments:                                                ;;
  116. ;;  msg  - prompt string                                      ;;
  117. ;;  pred - optional predicate function taking ename argument  ;;
  118. ;;  func - selection function to invoke                       ;;
  119. ;;------------------------------------------------------------;;
  120. ;;  Returns:  selected entity ename if successful, else nil   ;;
  121. ;;------------------------------------------------------------;;
  122. (defun LM:Select ( msg pred func / e ) (setq pred (eval pred))  
  123. (while
  124.    (progn (setvar 'ERRNO 0) (setq e (car (func msg)))
  125.      (cond
  126.        ( (= 7 (getvar 'ERRNO))
  127.          (princ "\n** Missed, Try again **")
  128.        )
  129.        ( (eq 'ENAME (type e))
  130.          (if (and pred (not (pred e)))
  131.            (princ "\n** Invalid Object Selected **")
  132.          )
  133.        )
  134.      )
  135.    )
  136. )
  137. e
  138. )
回复

使用道具 举报

27

主题

126

帖子

99

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-6 10:31:01 | 显示全部楼层
关哦,太近了。。。
 
对于77.5725的值,定位将为0+78,但它将值设为77+57。
 
再举一个例子,如果进尺是1058.4878,则驻扎将是10+58,105687.4578将是1056+87。
回复

使用道具 举报

6

主题

249

帖子

247

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 10:36:34 | 显示全部楼层
李,把sta值除以100
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 02:17 , Processed in 0.465328 second(s), 70 queries .

© 2020-2025 乐筑天下

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