明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1731|回复: 6

为什么不能用progn同时调整用两个子程序

[复制链接]
发表于 2012-11-12 22:50:06 | 显示全部楼层 |阅读模式
各位前辈,我用PROGN同时调用两个子程序,总是提示"命令输入时发送的类型无效"?
(defun c:mmx()
  (setq ab "a4")
(progn
    (ptmake)
    (plm))
  )

(Defun Ptmake()
  (Setq Pfpt1 (getpoint "1:")
        Pfpt2 (getpoint "2:")
        Pfpt3 (getpoint "3:")
        Pfpt4 (getpoint "4:")
        Pfpt5 (getpoint "5:"))
)

(defun plm(/ Pfpt1 Pfpt2 Pfpt3 Pfpt4 Pfpt5 Pfpt11 Pfpt12)
  (VL-CMDF ".-Layer" "Thaw" AB "Set" AB "")
  (VL-CMDF  ".Pline" Pfpt1 Pfpt2 Pfpt3 Pfpt4 Pfpt5 Pfpt1 "C")
  )



点评

把子程序plm中局部变量取消或在plm中把ptmake中的点定义为参数  发表于 2012-11-12 23:36
plm调用时Pfpt1 Pfpt2 Pfpt3 Pfpt4 Pfpt5 已经为nil,当然无效  发表于 2012-11-12 23:33
 楼主| 发表于 2012-11-12 22:54:08 | 显示全部楼层
可是如果把程序改成以下,就可以正常运用.请问各位前辈这是什么道理 ?
(defun c:mmx()
  (setq ab "a4")
  (ptmake)
  (VL-CMDF ".-Layer" "Thaw" AB "Set" AB "")
  (VL-CMDF  ".Pline" Pfpt1 Pfpt2 Pfpt3 Pfpt4 Pfpt5 Pfpt1 "C")
  )

(Defun Ptmake()
  (Setq Pfpt1 (getpoint "1:")
        Pfpt2 (getpoint "2:")
        Pfpt3 (getpoint "3:")
        Pfpt4 (getpoint "4:")
        Pfpt5 (getpoint "5:"))
)
 楼主| 发表于 2012-11-12 23:47:59 | 显示全部楼层
yjr111  plm调用时Pfpt1 Pfpt2 Pfpt3 Pfpt4 Pfpt5 已经为nil,当然无效
可是这时再执行 (VL-CMDF  ".Pline" Pfpt1 Pfpt2 Pfpt3 Pfpt4 Pfpt5 Pfpt1 "C"),一样是可以执行的,在监视中也能查看到各个pfpt点的坐标,这又是怎么回事呢?
发表于 2012-11-13 07:21:20 | 显示全部楼层
你把plm的点参数删除就好了.因为plm中点参数为局部变量.局部变星不受全局变量的影响.而局部变量你未赋值.所以出现问题
 楼主| 发表于 2012-11-13 21:22:25 | 显示全部楼层
namezg 发表于 2012-11-13 07:21
你把plm的点参数删除就好了.因为plm中点参数为局部变量.局部变星不受全局变量的影响.而局部变量你未赋值.所 ...

可是我用PROGN先调用PTMAKE的目的,就是先给PLM的变量赋值
发表于 2012-11-13 21:28:00 | 显示全部楼层
(defun c:mmx( / Pfpt1   Pfpt2   Pfpt3   Pfpt4   Pfpt5 )
    (setq ab "a4")
    (ptmake)
    (plm Pfpt1  Pfpt2  Pfpt3  Pfpt4  Pfpt5 )  )

(Defun Ptmake()
  (Setq Pfpt1 (getpoint "1:")
        Pfpt2 (getpoint "2:")
        Pfpt3 (getpoint "3:")
        Pfpt4 (getpoint "4:")
        Pfpt5 (getpoint "5:"))
)

(defun plm(p1 p2 p3 p4 p5)
  (VL-CMDF ".-Layer" "Thaw" AB "Set" AB "")
  (VL-CMDF  ".Pline" p1 p2 p3 p4 p5 "C")
  )

发表于 2012-11-14 07:23:30 | 显示全部楼层
本帖最后由 namezg 于 2012-11-14 07:24 编辑

去学习学习全局变量和局部变量吧.你ptmake里面用的是全局变量.而plm里的变量是局部变量.故ptmake里赋值对plm里不起作用.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-5 08:44 , Processed in 0.166534 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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