找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: madbull

[求助] [求助]:怎样看透视

[复制链接]
 楼主| 发表于 2003-6-18 17:49:20 | 显示全部楼层
zhynt  兄说得对,第二种情况的确是CAD对问题.重装CAD之后,问题解决了.
第一种情况,在运行之前,我已经输入了焦距,但问题依旧.期待您改进这个BUG.
顺便说一句:我用的是R2002版.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-6-19 17:57:46 | 显示全部楼层
zhynt兄,今天有时间,我又试了一下您改编的LSp.我发现在R14版本中,您改编的文件是完全好使的,但是在R2000以上版本时则会出现我所发现的问题。这可能与我提供的源文件有关--11.LSP本来就取自天正3。不过我相信zhynt兄有能力处理好这个BUG。
另外,今天我还试了一下天正5中的透视功能,很不错,比较天正3又有了很大的改进。但是很遗憾,我没有找到相应的LSP文件,否则也许对您会有所帮助。不过,我发现天正5中的LSP文件都没有像天正3的LSP文件那样进行加密,然而选取其中的命令在天正5中执行却不好使(我的意思是说:比如我在其中的一个LSP文件中找到(defun c:chwin 这样一行文字,我把chwin拷贝下来,粘贴在天正5的命令行执行,却被认为是“未知命令”)。小弟道行甚浅,不解其中缘由,请大侠们指交一二。不求学得解密要领,但求增长知识。谢谢!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-6-20 01:47:29 | 显示全部楼层
我今天又试了一下,却没有发现上述问题,真是奇怪。再有就是天正5有些命令使用了天正实体,在没有天正时是无法运行的,这个我也没有办法。抱歉。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-6-20 16:26:49 | 显示全部楼层
zhynt 兄,我在R2002和R2004版中还是遇到了"透视图只能看到局部"的问题.
我猜想也许是相机点定位的问题吧.
麻烦您有时间在测试,改进一下,好吗?
求您了.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-6-20 18:21:07 | 显示全部楼层
暂时的解决方法是用dview命令:
dview回车
all回车
d回车
用鼠标调整距离。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2003-6-20 20:13:36 | 显示全部楼层
这样试试,Lisp文件。Dpan命令无效,Dzoom命令输入整数或小数,缩小时不可省略0,如 0.5  0.6 ...
[php]
;(_@ld "wzqlib3d")
;(_@ld "dcllib")
(defun rs_error ()
  (set_tile "error" "")
)
(defun c:qview (/ lens z_cm z_tg tf_vp2 p_cm p_tg do_save do_lens_list
                  do_vp2 lens_list wzq wx is_sv_vw vw_name do_sv_vw
                  do_preview
               )
  (defun do_save ()
    (if (or
          (not p_cm)
          (not p_tg)
        )
      (progn
        (set_tile "error" "相机/目标位置未定义")
        (mode_tile "position" 2)
      )
      (progn
        (setq lens (distof (get_tile "lens"))
              z_cm (distof (get_tile "z_cm"))
              z_tg (distof (get_tile "z_tg"))
              tf_vp2 (get_tile "tf_vp2")
              tf_vp2 (= tf_vp2 "1")
              _lt_view (list lens z_cm z_tg tf_vp2 p_cm p_tg is_sv_vw
                             vw_name
                       )
        )
        (done_dialog 1)
      )
    )
  )
  (defun do_lens_list (reason value / data)
    (if (= 1 reason)
      (progn
        (setq data (nth (read value) lens_list)
              lens (read data)
        )
        (set_tile "lens" data)
      )
    )
  )
  (defun do_vp2 ()
    (setq tf_vp2 (= (get_tile "tf_vp2") "1"))
    (mode_tile "z_tg" (if tf_vp2
                        1
                        0
                      )
    )
  )
  (defun do_pick (/ wzq)
    (command ".ucs" "_w")
    (if (not (equal (getvar "viewdir") '(0 0 1) 1e-4))
      (progn
        (command ".plan" "_w")
        (setq wzq (getvar "viewsize"))
        (setq wzq (* 0.5 (min
                           1.0
                           (/ wzq (* 3 (caddr (getvar "extmax"))))
                         )
                  )
        )
        (setq wzq (strcat (rtos wzq 2 2) "X"))
        (command ".zoom" wzq)
      )
    )
    (if (or
          (not p_cm)
          (not p_tg)
        )
      (progn
        (setq p_cm (getpoint "\n请点取相机位置: "))
        (setq p_tg (getpoint p_cm "\n点取目标点: "))
      )
      (progn
        (grdraw p_cm p_tg 1 1)
        (setq wzq (getpoint "\n请点取相机位置 <上次值>: "))
        (if wzq
          (setq p_cm wzq
                p_tg (getpoint p_cm "\n点取目标点: ")
          )
        )
      )
    )
  )
  (defun do_sv_vw ()
    (mode_tile "vw_name" (if (= is_sv_vw "1")
                           0
                           1
                         )
    )
  )
  (defun do_vw (/ wx)
    (setq wx $value)
    (if (tblsearch "VIEW" wx)
      (progn
        (if (not (new_dialog "vw_cfm" _tde_id))
          (exit)
        )
        (if (= (start_dialog) 0)
          (mode_tile "vw_name" 2)
          (setq vw_name wx)
        )
      )
      (setq vw_name wx)
    )
  )
  (defun do_preview ()
    (if (or
          (not p_cm)
          (not p_tg)
        )
      (do_pick)
    )
    (if tf_vp2
      (setq z_tg z_cm)
    )
    (setq p_cm (list (car p_cm) (cadr p_cm) z_cm))
    (setq p_tg (list (car p_tg) (cadr p_tg) z_tg))
    (command ".DVIEW" "" "_D" 1.0 "_Z" lens "_PO" p_tg p_cm "_x")
  )
  (command ".VIEW" "_S" "_begin")
  (if (not (= 1 (boole 1 1 (getvar "viewmode"))))
    (progn
      (setq wzq (getvar "EXPERT"))
      (setvar "EXPERT" 4)
      (command ".view" "_s" "_TCHTMP")
      (setvar "EXPERT" wzq)
    )
  )
  (if _lt_view
    (mapcar 'set '(lens z_cm z_tg tf_vp2 p_cm p_tg is_sv_vw vw_name) _lt_view)
    (setq lens 18.0
          z_cm 1600.0
          z_tg z_cm
          tf_vp2 T
          is_sv_vw "1"
          vw_name "view1"
    )
  )
  (command ".ucs" "")
  (if (= (getvar "viewmode") 1)
    (setq p_tg (getvar "target")
          p_cm (mapcar'+ p_tg (getvar "viewdir"))
          lens (getvar "lenslength")
          z_cm (caddr p_cm)
          z_tg (caddr p_tg)
          tf_vp2 (equal z_cm z_tg _zro)
    )
  )
  (setq _tde_id (load_dialog "qview.dcl"))
  (setq what_next 5)
  (while (> what_next 2)
    (if (not (new_dialog "qview" _tde_id))
      (exit)
    )
    (setq lens_list (list "18" "28" "35" "50" "70"))
    (start_list "lens_list")
    (mapcar'add_list lens_list)
    (end_list)
    (set_tile "lens" (rtos lens 2 0))
    (set_tile "z_cm" (rtos z_cm))
    (set_tile "z_tg" (rtos z_tg))
    (set_tile "tf_vp2" (if tf_vp2
                         "1"
                         "0"
                       )
    )
    (set_tile "is_sv_vw" is_sv_vw)
    (set_tile "vw_name" vw_name)
    (do_sv_vw)
    (rs_error)
    (if tf_vp2
      (mode_tile "z_tg" 1)
    )
    (action_tile "lens" "(setq lens (distof $value))")
    (action_tile "z_cm" "(setq z_cm (distof $value))")
    (action_tile "z_tg" "(setq z_tg (distof $value))")
    (action_tile "tf_vp2" "(do_vp2)")
    (action_tile "lens_list" "(do_lens_list $reason $value)")
    (action_tile "position" "(done_dialog 3)")
    (action_tile "is_sv_vw" "(progn (setq is_sv_vw $value) (do_sv_vw))")
    (action_tile "vw_name" "(do_vw)")
    (action_tile "preview" "(done_dialog 4)")
    (action_tile "accept" "(do_save)")
    ;(action_tile "help" "(do_help \"QVIEW\")")
    (setq what_next (start_dialog))
    (cond
      ((= what_next 0)
        (command ".VIEW" "_R" "_begin" ".VIEW" "_D" "_begin")
      )
      ((= what_next 1)
        (do_preview)
        (command ".VIEW" "_S" vw_name ".VIEW" "_D" "_begin")
      )
      ((= what_next 3)
        (do_pick)
      )
      ((= what_next 4)
        (do_preview)
        (getint "\n按<回车>返回对话框.")
      )
    )
  )
  (princ)
)
(defun c:dvpan ()
  (setvar "highlight" 0)
  (command ".dview" "ALL" "")
  (setvar "highlight" 1)
  (princ "\n调整图面位置, 点取参考点:")
  (command "PA" pause)
  (princ "\n点取到点:")
  (command pause)
  (command "X")
  (princ)
)
(defun c:dzoom (/ k p_tg p_cm lens wzq)
  (if (= (getvar "viewmode") 1)
    (progn
      (command ".ucs" "")
      (setq p_tg (getvar "target")
            p_cm (mapcar'+ p_tg (getvar "viewdir"))
            lens (getvar "lenslength")
      )
      (setq k (getstring "\n请输入当前视图放大倍数: "))
      (if (and
            k
            (numberp (setq k (read k)))
          )
        (progn
          (setq wzq (distance p_cm p_tg))
          (setq lens (/ (* k lens wzq) (+ wzq (- lens) (* k lens))))
          (command ".DVIEW" "" "_D" 1.0 "_Z" lens "_PO" p_tg p_cm "_x")
        )
      )
    )
    (prompt "\n* 不在透视状态.")
  )
  (princ)
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2003-6-20 20:16:00 | 显示全部楼层
DCL文件,存储为qview.dcl放到同一Support目录。

  1. // 快速透视
  2. qview : dialog {
  3.   label = "快速透视";
  4.   : column {
  5.     : row {
  6.       : column {
  7.       : edit_box {
  8.          edit_width = 6 ;
  9.          key = "z_cm" ;
  10.          label = "照相机标高C:" ;
  11.          width = 6 ;
  12.          mnemonic = "C";
  13.       }
  14.       : edit_box {
  15.          edit_width = 6 ;
  16.          key = "z_tg" ;
  17.          label = "目标点标高T:" ;
  18.          mnemonic = "T";
  19.       }
  20.       : button {
  21.          key = "position" ;
  22.          label = "相机/目标定位P<:" ;
  23.          mnemonic = "P";
  24.       }
  25.       }
  26.       : column {
  27.         : row {
  28.         : edit_box {
  29.            edit_width = 3;
  30.            key = "lens" ;
  31.            label = "焦距L:" ;
  32.            mnemonic = "L";
  33.         }
  34.         : popup_list {
  35.            key = "lens_list" ;
  36.            edit_width = 5;
  37.         }
  38.         }
  39.         : toggle {
  40.            key = "tf_vp2" ;
  41.            label = "两点透视B" ;
  42.            mnemonic = "B";
  43.         }

  44.         : button {
  45.           key = "preview";
  46.           label = "预演Y<";
  47.           mnemonic = "Y";
  48.           width = 8;
  49.         }
  50.       }
  51.     }
  52.     : row {
  53.       : boxed_row {
  54.         : toggle {
  55.           label = "储存视图C";
  56.           key = "is_sv_vw";
  57.           mnemonic = "C";
  58.         }
  59.         : edit_box {
  60.           label = "视图名V";
  61.           key = "vw_name";
  62.           mnemonic = "V";
  63.         }
  64.       }
  65.   }
  66.   ok_cancel ;
  67.   }
  68. }

  69. vw_cfm : dialog {
  70.   label = "视图储存信息";
  71.   : column {
  72.     : text {
  73.       label = "已有同样视图名, 是否覆盖?";
  74.     }
  75.     spacer_1;
  76.     : row {
  77.       : button {
  78.         label           = "覆盖";
  79.         key             = "accept";
  80.         is_default      = true;
  81.       }
  82.       : button {
  83.         label           = "重输";
  84.         key             = "cancel";
  85.         is_cancel       = true;
  86.       }
  87.     }
  88.   }
  89. }
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-6-20 20:23:29 | 显示全部楼层
嗨!弄来弄去又弄回来了,呵呵。这个程序我前面已经贴了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-6-21 11:57:51 | 显示全部楼层
eachy  兄,用了你的东东,问题依旧啊?还是在R2000+版本里出问题.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2003-6-21 12:26:18 | 显示全部楼层
最初由 madbull 发布
[B]eachy  兄,用了你的东东,问题依旧啊?还是在R2000+版本里出问题. [/B]

不明白你是什么问题?这个东东仅仅是Dv的组合没有用其他的。

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

使用道具 举报

 楼主| 发表于 2003-6-22 15:31:18 | 显示全部楼层
我的问题是:模型在线框模式下,无论目标点与相机点有多远,生成的透视都只能看见建筑的局部.(如图)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-8-6 12:06:49 | 显示全部楼层
我再次用了这个LIP,产生了如下问题:
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2004-8-6 12:09:12 | 显示全部楼层
3
可否请各位大侠示下:究竟是我对这个程序使用错误,还是这个程序有问题?各位大侠能否对此程序加以改进?
谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 08:26 , Processed in 0.411313 second(s), 54 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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