找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1657|回复: 12

[求助] [求助]:怎样在Lisp提取"nXP"中的"n"

[复制链接]
发表于 2003-12-29 16:56:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
写Lisp程序时
我想得到浮动视窗相对于图纸空间的比例,即提取"nXP"中的"n"
请大虾支招
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-12-30 13:01:24 | 显示全部楼层
;;Autolisp
請注意 ZOOM XP 係數是以下列公式運算得出的:group_41 / 2nd_group_1040 (或 pspace_height / mspace_height)。



;;;;;;;;;;;;
VLISP
;;;;;;;;;;;;
Viewport有CustomScale性質
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-12-30 16:23:26 | 显示全部楼层
(defun c:test ()
  (vl-load-com)
  (setq a (car (entsel "\nSelect Layout: ")))
  (setq b (vlax-ename->vla-object a))
  (vla-get-customscale b)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-1-2 11:07:55 | 显示全部楼层
谢谢您们热心的帮助

我刚学Lisp
我在图纸空间打印图纸,我有标准的图框,每个布局中只有一个视窗(viewport)
当我在Model中建好模后,切到图纸空间:
运行 PSC (print scale)

(defun C:psc ( / scn sc scget n rsc sc1 scale)
  (setvar "cmdecho" 0)
  (command "mspace")
  (command "zoom" "e")
  (command "zoom" "0.95x")
接下来我需要知道浮动视窗(只有一个)相对于图纸空间的比例,即提取"nXP"中的"n"
然后把n整合为习惯比例,再运行 zoom nXP
我想要程序运行到(command "zoom" "0.95x")后,自动得到"nXP"中的"n",没有任何选择
或输入。我不知道怎样自动Get 那个 Viewport,然后提取属性,或者有其他方法?
(我现在用手工输入n,由于事先不知道n大约是多少,往往要试几次才得到满意的比例)
谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-1-2 14:12:37 | 显示全部楼层
那改成这样:
(defun getnxp (layoutname)
  (setq lays (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object))))
  (setq obj (vla-item lays layoutname))
  (vla-get-customscale obj)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-1-2 14:21:20 | 显示全部楼层
最初由 lsjjm 发布
[B]那改成这样:
(defun getnxp (layoutname)
  (setq lays (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object))))
  (setq obj (vla-item lays layoutname))
  (vla-get-customscale obj)
) [/B]



;;;;;;;;;;;;
VLISP
;;;;;;;;;;;;
Viewport有CustomScale性質(LAYOUT沒有)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-1-2 14:54:07 | 显示全部楼层
不好意思, COPY错了.
将 (vla-get-layouts... 改为 (vla-get-viewports...
将 layoutname 改为 viewportname.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-1-2 15:29:38 | 显示全部楼层

  1. ;;VLISP
  2. ;;更正:PViewport 才有CustomScale
  3. Specifies the custom scale factor for the viewport.

  4. Signature

  5. object.CustomScale

  6. object        PViewport
  7. The object or objects this property applies to.

  8. CustomScale        Double; read-write
  9. The custom scale factor for the viewport.

  10. Remarks

  11. To set the viewport to a custom scale, first set the StandardScale property to acVpCustomScale, then use this property to define the custom scale value.

  12. ;;BY LUCAS
  13.    ;;每個佈局中只有一個視窗(viewport)
  14.   ;;切到圖紙空間
  15.   ;;(command "PSPACE")
  16.   (setq        XP (vla-get-customscale
  17.              (vlax-ename->vla-object
  18.                (ssname (ssget "X"
  19.                               (list '(-4 . "< AND")
  20.                                     '(0 . "VIEWPORT")
  21.                                     (cons 410 (getvar "CTAB"))
  22.                                     '(-4 . "< not")
  23.                                     '(69 . 1)
  24.                                     '(-4 . "not >")
  25.                                     '(-4 . "AND >")
  26.                               )

  27.                        )
  28.                        0
  29.                )
  30.              )
  31.            )
  32.   )
  33.   ;;-------------------------------------------


  34. ;; '(-4 . "< AND");;;把空格去除

  35. ;;lsjjm 兄
  36. ;;把程序想清楚,VIEWPORTNAME是甚么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-1-3 11:04:44 | 显示全部楼层
I'm sorry that I know nothing about ActiveX funtions. I tried your sub-program, but
it did not work and returned an error of "too few arguments". Would you please fix it
for me? Tks!
David

(defun C:getnxp ( / XP)
(setq XP (vla-get-customscale
             (vlax-ename->vla-object
               (ssname (ssget "X"
                              (list '(-4 . "< AND")
                                    '(0 . "VIEWPORT")
                                    (cons 410 (getvar "CTAB"))
                                    '(-4 . "< not")
                                    '(69 . 1)
                                    '(-4 . "not >")
                                    '(-4 . "AND >")
                              )
                       )
               )
             )
           )
)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-1-3 12:29:26 | 显示全部楼层

  1. ;;BY LUCAS
  2. ;;LISP總會了吧!
  3. ;;(find_xp (car (entsel "\nSelect Viewport: ")))
  4. (defun FIND_XP (ENAME / XP)
  5.   (if ENAME
  6.     (setq XP (cdadr (assoc -3 (entget ENAME '("ACAD"))))
  7.           XP (/        (cdr (assoc 41 (entget ENAME)))
  8.                 (cdr (assoc 1040 (cdr (member (assoc 1040 XP) XP)))
  9.                 )
  10.              )
  11.     )
  12.   )
  13. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-1-28 18:00:46 | 显示全部楼层
如果我不想让程序停下来让我去选择那个唯一的视窗呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2004-1-29 00:34:32 | 显示全部楼层
上下两贴组合一下不就行了吗?
把:
(car (entsel "\nSelect Viewport: "))

换成:
(ssname (ssget "X"
                              (list '(-4 . "< AND")
                                    '(0 . "VIEWPORT")
                                    (cons 410 (getvar "CTAB"))
                                    '(-4 . "< not")
                                    '(69 . 1)
                                    '(-4 . "not >")
                                    '(-4 . "AND >")
                              )

                       )
                       0
               )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-1-29 19:02:43 | 显示全部楼层
大哥, 我刚学不久,请为我写一个可以直接加载的完整的程序(返回n)好吗?
谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-27 02:01 , Processed in 0.192831 second(s), 57 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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