如何在不打开CAD文件的情况下,获取该文件中起作用的标注样式中的全局比例和图形范围。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在不打开CAD文件的情况下,获取该文件中起作用的标注样式中的全局比例和图形范围。相关的知识,希望对你有一定的参考价值。

此小程序是对autocad的二次开发,使用VBA或者ARX来做。还有我说的图形范围是指整个图形占据的范围(即是使用“范围”缩放命令得到的范围)不是图形界限
我试图使用ScaleFactor属性获取全局比例,但找不到途径

看了一些资料 找不到路子%%%%%%

参考技术A 这个涉及到dwg文件格式追问

关于dwg文件格式能否详细讲下,是不是关于dwg文件的存储方式或者是dxf组码的问题?
麻烦给予指点下。

如何在不打开的情况下获得最大文件的大小?

【中文标题】如何在不打开的情况下获得最大文件的大小?【英文标题】:How can I get a size of biggest file without open? 【发布时间】:2015-08-20 12:12:50 【问题描述】:

我知道有<sys/stat.h> 标头但是:

struct stat 

  dev_t     st_dev;     /* ID of device containing file */
  ino_t     st_ino;     /* inode number */
  mode_t    st_mode;    /* protection */
  nlink_t   st_nlink;   /* number of hard links */
  uid_t     st_uid;     /* user ID of owner */
  gid_t     st_gid;     /* group ID of owner */
  dev_t     st_rdev;    /* device ID (if special file) */
  off_t     st_size;    /* total size, in bytes */
  blksize_t st_blksize; /* blocksize for file system I/O */
  blkcnt_t  st_blocks;  /* number of blocks allocated */
  time_t    st_atime;   /* time of last access */
  time_t    st_mtime;   /* time of last modification */
  time_t    st_ctime;   /* time of last status change */
;

off_t 的最大值是 2147483647(在我的机器上),小于 2GB。

还有其他方法吗?

我的操作系统是 Win32。

【问题讨论】:

哪个操作系统?您有一个系统 api 来询问文件大小。无需打开。 有些系统提供stat64 【参考方案1】:

虽然有一个符合 POSIX 的 stat64 函数,但它在 Windows 上不可用(正如另一个答案中提到的,有一个 _stat64 函数)。

在 Windows 中最适合使用的函数是GetFileAttributesEx。

例如:

BOOL result;
WIN32_FILE_ATTRIBUTE_DATA fad;
LONGLONG filesize;

result = GetFileAttributesEx(filename, GetFileExInfoStandard, &fad);
if (result) 
    filesize = ((LONGLONG)fad.nFileSizeHigh << 32) + fad.nFileSizeLow;

【讨论】:

LONGLONG 是 "unsigned long long" 吗? 请参阅msdn.microsoft.com/en-us/library/cc230344.aspx 了解确切定义。您也可以使用long long__int64。 Microsoft 似乎不提供无符号 64 位整数类型。【参考方案2】:

对于 Windows 上的文件操作,您有两种选择。

找到适当的标准或半标准 C 或 POSIX 函数 - 在本例中为 _stat64。如果您尝试编写更可移植的代码,这会更有用,但即便如此,也经常与其他平台不兼容。 (例如,Linux 没有_stat64;相反,它使用#define 使stat 支持64 位。) 使用适当的 Windows API 函数 - 在本例中为 GetFileAttributesEx。对于纯 Windows 应用,这可能比尝试使用标准或半标准 C 和 POSIX 函数更容易并且可能会公开更多功能。

【讨论】:

如果提问者对所有文件信息不感兴趣,GetFileSizeEx 可能就足够了。 @WernerHenze 该函数的第一个参数是一个 HANDLE,这意味着事先打开文件。 OP 要求提供一种无需打开即可获取文件大小的方法。

以上是关于如何在不打开CAD文件的情况下,获取该文件中起作用的标注样式中的全局比例和图形范围。的主要内容,如果未能解决你的问题,请参考以下文章

如何使这种继承在 Java 中起作用? [关闭]

如何在不重新打开文件的情况下读取然后写入/追加到文本文件?

如何在不运行的情况下打开 JSFL 文件?

如何在不打开的情况下从 CSV 文件中检索数据

如何在不从磁盘中删除文件的情况下 git rm 文件? [复制]

如何在不使用 MATLAB 的情况下打开 .mat 文件?