明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3079|回复: 10

[已解答] win7 64位下很多程序运行不正常

[复制链接]
发表于 2015-6-2 08:54 | 显示全部楼层 |阅读模式
自己做了个工具箱,在32系统下 cad2004运行正常。换电脑后装64位win7 因为没有64位的2004,装的2009.结果大多数程序运行不正常,现在截取其中一个小程序,如下,大家帮忙分析下怎么解决??

此程序2004  xp运行正常   2009 win7 64位提示无效命令。

;****************************************************连接断线程序
(defun c:lj (/ ent ent1 pt1 pt2 pt3 pt4 ptlst ptls kj fltrad memb sel sel1 x y)
  (setq fltrad (getvar "filletrad"))(setvar "filletrad" 0)
(setq sel (entsel"\n拾取第一条线<LINE,PLINE,ARC>:") ent (car sel)
      sel1 (entsel"\n拾取另一条线<LINE,PLINE,ARC>:")ent1 (car sel1))
(setq pt1(vlax-curve-getStartPoint ent)
      pt3(vlax-curve-getStartPoint ent1)
      pt2(vlax-curve-getEndPoint ent)
      pt4(vlax-curve-getEndPoint ent1))
    (if(and(and(=(cdr(assoc 0(entget ent)))"LINE")
    (=(cdr(assoc 0(entget ent1)))"LINE"))
      (and(null(inters pt1 pt2 pt3 pt4 nil))
     (equal(angle pt1 pt3)(angle pt1 pt4)0.0000001))
    )     
      (progn
  (setq ptlst (list (list pt1 pt3)
      (list pt1 pt4)
      (list pt2 pt3)
      (list pt2 pt4)
      )
)
(mapcar '(lambda (x)
    (setq kj (cons(apply 'distance x)kj))
    )
ptlst
)
(mapcar '(lambda (y)
  (if (=(apply 'distance y)(apply 'max kj))
    (setq ptls y)
    )
    )ptlst
)
  (cond((/=(setq memb (member(car ptls)(list pt1 pt2)))nil)  
(if(=(cadr ptls)pt3)
(vla-put-endpoint (vlax-ename->vla-object ent1)
                  (vlax-3d-point(car ptls)))
(vla-put-startpoint (vlax-ename->vla-object ent1)
                    (vlax-3d-point(car ptls)))   
   )(vl-cmdf ".erase" ent "")
)
       (t(if(=(car ptls)pt1)
(vla-put-endpoint (vlax-ename->vla-object ent)
                  (vlax-3d-point(cadr ptls)))
(vla-put-startpoint (vlax-ename->vla-object ent)
                    (vlax-3d-point(cadr ptls)))
   )(vl-cmdf ".erase" ent1 ""))))
    (vl-cmdf ".fillet" sel sel1)  
    )(setvar "filletrad" fltrad)(princ)
  )
发表于 2015-6-2 10:38 | 显示全部楼层
在开始加入(vl-load-com)试试
发表于 2015-6-2 10:45 来自手机 | 显示全部楼层
64位没有2009.最低2010
发表于 2015-6-2 11:35 | 显示全部楼层
429014673 发表于 2015-6-2 10:45
64位没有2009.最低2010

你确定?   
 楼主| 发表于 2015-6-2 13:34 | 显示全部楼层
荒野孤行 发表于 2015-6-2 10:38
在开始加入(vl-load-com)试试

我把多个lsp集成在一个lsp里面了,有多个defun命令   ,有的能用,有的不能用。每个开头都加vl-load-com?

点评

写在其它程序外面 ,加一次就够了,多加几次也没什么关系  发表于 2015-6-2 14:00
发表于 2015-6-2 13:42 来自手机 | 显示全部楼层
vlax-create-object部分不一定能用
发表于 2015-6-2 13:52 | 显示全部楼层
lengxiaxi 发表于 2015-6-2 13:34
我把多个lsp集成在一个lsp里面了,有多个defun命令   ,有的能用,有的不能用。每个开头都加vl-load-com? ...

对了,AutoCAD从2010版开始安装包里面是不带VBA的,你的程序有用vl,vlax,vla的就会只有部分能用。所以你再安装AutoCAD的VBA看看(官网里面去下)
 楼主| 发表于 2015-6-2 14:00 | 显示全部楼层
问题已自我修复,虽不知道为什么,单独拆开,独立作为一个LSP,在主程序里。用 load命令载入就可以。
发表于 2015-6-2 20:22 来自手机 | 显示全部楼层
sicky111 发表于 2015-6-2 11:35
你确定?

不懂的话,上官网查下,不要乱破CAD
发表于 2015-6-9 08:44 | 显示全部楼层
是不是全局变量或者子函数重名了?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-27 11:22 , Processed in 0.439125 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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