找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1505|回复: 2

[分享] 在CAD中以真实比例尺看图

[复制链接]
发表于 2013-5-22 12:57:48 | 显示全部楼层 |阅读模式

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

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

×
  1. ''' <summary>
  2.     ''' 以真实比例尺查看
  3.     ''' </summary>
  4.     ''' <param name="dScale">比例尺大小 如 2000 1000 等(大于0 的一个数)</param>
  5.     ''' <remarks></remarks>
  6.     Public Sub ViewWithRealScale(ByVal dScale As Double, ByVal cPt As Point2d)
  7.         If dScale <= 0 Then
  8.             Exit Sub
  9.         End If

  10.         Dim VtrRec As Point2d = Application.GetSystemVariable("screensize")
  11.         Dim newVtr As New ViewTableRecord
  12.         newVtr.CenterPoint = cPt

  13.         Dim PixelHeight As Integer = 0, PixelWidth As Integer = 0
  14.         GetPhysicalScreenSize(PixelWidth, PixelHeight)

  15.         newVtr.Height = (PixelHeight * VtrRec.Y / My.Computer.Screen.Bounds.Height) * dScale / 1000.0

  16.         Doc.Editor.SetCurrentView(newVtr)
  17.         Doc.Editor.UpdateScreen()
  18.     End Sub

  19.     ''' <summary>
  20.     ''' 访问使用设备描述表的设备数据
  21.     ''' </summary>
  22.     ''' <param name="hdc">设备上下文环境的句柄</param>
  23.     ''' <param name="nIndex">指定返回项</param>
  24.     ''' <returns></returns>
  25.     ''' <remarks></remarks>
  26.     <DllImport("GDI32.dll")> _
  27.     Public Shared Function GetDeviceCaps(ByVal hdc As Integer, ByVal nIndex As Integer) As Integer
  28.     End Function


  29.     <DllImport("user32.dll")> _
  30.     Public Shared Function GetDC(ByVal hwnd As Integer) As Integer
  31.     End Function


  32.     <DllImport("user32.dll")> _
  33.     Public Shared Function ReleaseDC(ByVal hwnd As Integer, ByVal hdc As Integer) As Long
  34.     End Function

  35.     ''' <summary>
  36.     ''' 返回桌面窗口的句柄
  37.     ''' </summary>
  38.     ''' <returns></returns>
  39.     ''' <remarks></remarks>
  40.     <DllImport("user32.dll")> _
  41.     Public Shared Function GetDesktopWindow() As Integer
  42.     End Function

  43.     ''' <summary>
  44.     ''' 获取显示器的物理尺寸
  45.     ''' </summary>
  46.     ''' <param name="iWidth">屏幕的宽度</param>
  47.     ''' <param name="iHeight">屏幕的高度</param>
  48.     ''' <remarks>单位:毫米</remarks>
  49.     Public Shared Sub GetPhysicalScreenSize(ByRef iWidth As Integer, ByRef iHeight As Integer)
  50.         '状态:20121106-1512测试通过
  51.         Dim hDesktopWnd As Integer = GetDesktopWindow()
  52.         Dim hdcCaps As Integer = GetDC(hDesktopWnd)
  53.         iWidth = GetDeviceCaps(hdcCaps, 4)
  54.         iHeight = GetDeviceCaps(hdcCaps, 6)
  55.         ReleaseDC(hDesktopWnd, hdcCaps)
  56.     End Sub

评分

参与人数 1D豆 +3 收起 理由
ScmTools + 3 很给力!经验;技术要点;资料分享奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2013-5-22 12:58:55 | 显示全部楼层
可以拿尺子在屏幕上试一下,很准的。前提:CAD中长度的单位为米
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3256个

财富等级: 富可敌国

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 22:47 , Processed in 0.193770 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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