明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3853|回复: 22

请看一下程序问题出在哪里

  [复制链接]
发表于 2003-8-19 14:11:00 | 显示全部楼层 |阅读模式
诸位专家:
  (defun c:gx( /)
     (prompt "\n选择转化为多义线的图元")
    (setq a (ssget  w))
      (prompt "\n 选择创建面域的集合")
     (setq b (ssget w))
   (command "pedit" a "j" " "
                   "region"  b)
    (prompt  "选择减去的实体")
   (setq   c (ssget w))
   (prompt "选择从中减去的实体")
   (setq d (ssget w))
  (prompt "选择查询面域的质量与特性”)
( setq   e  (ssget  w))
  (command  "subtract" c " " d  "   ")
  (command "massprop" e)

   1、程序总是每次运行一次才能执行下面的命令,(例如:多义线编辑完成以后,就会
        跳出,必须再执行命令 GX后,才会执行创建面域)
   2、实体的差集计算总是只能选择 实体C(减去的实体) (实体  d 选不上)。
发表于 2003-8-19 15:00:00 | 显示全部楼层
不是很明白你程序的过程,
转换多义线过程应该还有一个提示(如果选择的不是PLINE),是否转换为多义线<Y>,你第一次未做这个,因此第二次运行可以成功。
你的(ssget w)是什么意思?想表达什么,因为你这样与(ssget)一样,而且如果给W附上值后就会产生错误。
 楼主| 发表于 2003-8-19 17:14:00 | 显示全部楼层

你说的对呀

你好:
   前面的选择集(setq a (ssget))这样你说对了。
   关键在后面命令 (SUBTRACT ) 求实体的差集,总是选择第一个呀,第二个“选择从中
  减去的实体”就选不上了。
 楼主| 发表于 2003-8-19 17:24:00 | 显示全部楼层
程序大体思想:
     首先将图形的线段,通过“PEDIT“命令转化为多义线。
     第二步、命令”REGION“ 创建面域
     第三步、进行实体的编辑” SUBTRACT“   用外腔(外层的轮廓)为”减去的实体“
                                                           内腔  为 ”从中减去的实体“
   第四步、 通过工具 查询 面域质量 ”MASSPROP“
 楼主| 发表于 2003-8-19 17:39:00 | 显示全部楼层
程序大体思想:
     首先将图形的线段,通过“PEDIT“命令转化为多义线。
     第二步、命令”REGION“ 创建面域
     第三步、进行实体的编辑” SUBTRACT“   用外腔(外层的轮廓)为”减去的实体“
                                                           内腔  为 ”从中减去的实体“
   第四步、 通过工具 查询 面域质量 ”MASSPROP“


    主要完成 1、”PEDIT“  <Y> "J"
                2 ,"REGION"  创建面域  提取了两个环,创建两个面域
                3 SUBTRACT  用实体(外层的) 减  内层的实体
                4 MASSPROP  查询求差集后的面域质量

本帖子中包含更多资源

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

x
发表于 2003-8-20 09:36:00 | 显示全部楼层
转换为面域不需先PEDIT

(defun c:gx (/ a ent1 ent2 ent_tmp)
  (prompt "\n选择转化为多义线的图元")
  (setq a (ssget))
  (command "_.region" a "")
  (prompt "\n选择面域")
  (setq a (ssget))
  (setq ent1 (ssname a 0))
  (setq ent2 (ssname a 1))
  (if (< (vla-get-area (vlax-ename->vla-object ent1)) (vla-get-area (vlax-ename->vla-object ent2)))
    (progn
      (setq ent_tmp ent1)
      (setq ent1 ent2)
      (setq ent2 ent_tmp)
    )
  )
  (command "subtract" ent1 "" ent2 "")
  (command "massprop" (entlast) "")
)
 楼主| 发表于 2003-8-20 09:57:00 | 显示全部楼层

no function definition: VLAX-ENAME->VLA-OBJECT

AUTOCAD 2004 不支持 VLISP 吗?
  no function definition: VLAX-ENAME->VLA-OBJECT
    该函数未定义什么意思?
           应该怎么解决呢?
  

     另外如果图形是多层的,选择的实体不仅限于两个(使用
                 (SETQ  ENT1 (ENTSEL”ENT“))  合适吗?
发表于 2003-8-20 10:06:00 | 显示全部楼层
先加载(vl-load-com)
可以,
不过象我这个选择比较方便些,而且不需要判断哪个是ENT1,哪个是ENT2。
而且ENTSEL选择如果没选对就可能选择空,而且无法取消,必须重新运行
 楼主| 发表于 2003-8-20 10:49:00 | 显示全部楼层

结果

你好:

   如果我想只显示结果为
                 惯性矩:    X 值
                                 Y 值
            还应该怎么做呢?
 楼主| 发表于 2003-8-20 10:56:00 | 显示全部楼层

找不到

你好:

   VL-LOAD-COM 没有找到呀。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-9-25 04:36 , Processed in 0.178359 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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