乐筑天下

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

[编程交流] error: ActiveX Server returned

[复制链接]

36

主题

161

帖子

125

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
182
发表于 2022-7-5 15:39:10 | 显示全部楼层 |阅读模式
error: ActiveX Server returned the error: unknown name: Explode , Why ?
 
autocad 2010 , windows xp  
 
  1. ;|==================================================-===========================*    Универсальная функция разбития proxy-объектов.*    Параметры вызова:*  нет*    Примеры вызова:(_kpblc-block-explode-proxy)==================================================-===========================|;(defun _kpblc-block-explode-proxy (/ selset item layer_list) (vl-load-com) (setq selset (ssget "_X" '((0 . "ACAD_PROXY_ENTITY")))) (vlax-for item           (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))   (if (= (vla-get-lock item) :vlax-true)     (progn       (setq layer_list (append layer_list '(item)))       (vla-put-lock item :vlax-false)       ) ;_ end of progn     ) ;_ end of if   ) ;_ end of vlax-for (while (and selset             (> (sslength selset) 0)             ) ;_ end of and   (setq item (ssname selset 0))   (ssdel item selset)   (vla-explode (vlax-ename->vla-object item))   ) ;_ end of while (foreach item layer_list   (vla-put-lock item :vlax-true)   ) ;_ end of foreach ) ;_ end of defun;|==================================================-===========================*    Сервисная функция для вызова из ком.строки==================================================-===========================|;(defun c:xproxy (/ adoc) (vla-startundomark (vla-get-activedocument (vlax-get-acad-object))) (_kpblc-block-explode-proxy) (vla-endundomark (vla-get-activedocument (vlax-get-acad-object))) ) ;_ end of defun
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 15:46:05 | 显示全部楼层
Change:
  1. (vla-explode (vlax-ename->vla-object item))
to:
  1. (if (vlax-method-applicable-p (setq obj (vlax-ename->vla-object item)) 'explode) (vla-explode obj))
回复

使用道具 举报

36

主题

161

帖子

125

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
182
发表于 2022-7-5 15:50:31 | 显示全部楼层
 
Thanks Lee,  Now, No err.  
why I use this routine can't explode "ACAD_PROXY_ENTITY" object ?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 15:59:30 | 显示全部楼层
 
As far as I'm aware the ActiveX explode method does not apply to an ACAD_PROXY_ENTITY entity type; you may need to call the standard EXPLODE command to process this object.
回复

使用道具 举报

36

主题

161

帖子

125

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
182
发表于 2022-7-5 16:02:26 | 显示全部楼层
 
Many thanks ,Lee.
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 16:07:19 | 显示全部楼层
You're welcome
回复

使用道具 举报

0

主题

3

帖子

3

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 16:15:45 | 显示全部楼层
Hi!
I have a similar error. "error: ActiveX Server returned the error: unknown name: EffectiveName"
And I have this error if file has a table. If I delete a table everithing is good.
autocad 2015 , windows 8
 
  1. ;; Returns list of the Anonymous names taken by a Dynamic Block (if any)  -  Lee Mac 2011  -  www.lee-mac.com;; Arguments:  block  - name of Dynamic Block.(defun AnonymousInstancesof ( block / def rec nme ref lst ) (while (setq def (tblnext "BLOCK" (null def)))   (if (= 1 (logand 1 (cdr (assoc 70 def))))     (progn       (setq rec         (entget           (cdr             (assoc 330               (entget                 (tblobjname "BLOCK" (setq nme (cdr (assoc 2 def))))               )             )           )         )       )       (while (setq ref (assoc 331 rec))         (if           (and             (eq block (vla-get-effectivename (vlax-ename->vla-object (cdr ref))))             (not (member nme lst))           )           (setq lst (cons nme lst))         )         (setq rec (cdr (member (assoc 331 rec) rec)))       )     )   ) ) (reverse lst))
回复

使用道具 举报

rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 16:20:06 | 显示全部楼层
Welcome on CadTutor Doctor_Che
 
 
Usually this error occurs when a block is not dynamic. Use this :
 
 
  1. (setq object (vlax-ename->vla-object (cdr ref)))(if (vlax-property-available-p object 'effectivename)  (setq block (vla-get-effectivename object))  (setq block (vla-get-name object)))
gr. Rlx
回复

使用道具 举报

0

主题

3

帖子

3

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 16:27:53 | 显示全部楼层
 
But if I understand good the problem is not with block...
I have tried this code with new clean file.
  1. (print (AnonymousInstancesof "blockname"))
The result is "nil".
After I have inserted a table (just new empty table) into the file the result is "error: ActiveX Server returned the error: unknown name: EffectiveName".
So it is no block or dynamic block in file. Just a table (ACAD_TABLE).
回复

使用道具 举报

rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 16:30:30 | 显示全部楼层
I'm not much of an expert on tables but assuming it is this (and not any other) function that's responsible for the error you can try :
 
 
  1. (and (vlax-property-available-p (vlax-ename->vla-object (cdr ref)) 'effectivename) (eq block (vla-get-effectivename (vlax-ename->vla-object (cdr ref)))) (not (member nme lst)))
 
 
but I have no clue on this moment why this function would filter out a table in the first place.
 
 
gr. Rlx
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 21:07 , Processed in 0.432333 second(s), 72 queries .

© 2020-2025 乐筑天下

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