Proctor 发表于 2022-7-6 22:38:46

模板期初问题

你好:我有一份2005年写的申请书。net与autocad api
在用户输入命令后,代码指示
从服务器上打开模板。下面是打开它的代码:
 

dbTemplate.ReadDwgFile(sBOM_EstimatePath & "CO_TEMPLATE_1Estimate.dwt", System.IO.FileShare.Read, True, Nothing)

 
其中,as路径(sBOM_EstimatePath)位于服务器之外。
无论如何,这段代码一直没有问题。。。直到最近。
 
最近,有一个用户没有收到最近对此模板所做的更改(CO\u template\u 1Estimate.dwt)。
我进行了一系列测试,其中之一是更改用户本地驱动器的路径。当我这样做,并将模板放在这个路径中时,用户得到了包含所有最近更改的模板。
为什么它不从服务器中提取最新的模板?当我调试时,我看到它得到了正确的路径。如果它没有从那里提取模板,那么它从哪里获取该模板?
也许有一些兑现的问题。。。我必须澄清吗?
任何想法都会有帮助。。。
谢谢
监考人员

fixo 发表于 2022-7-6 22:47:48

尝试
导入系统。IO
---------------------
 
将完整路径设置为字符串=路径。合并(sBOM\u EstimatePath,“CO\u TEMPLATE\u 1Estimate.dwt”)
以及在“工具”->“选项”->“文件”选项卡中
搜索文件模板位置
或者您可以通过系统变量接收其主目录
“RoamablerOutprefix”
 
但不确定2005年的情况

Proctor 发表于 2022-7-6 22:52:07

嗨,菲索:谢谢你的建议。我已经实现了你建议的代码,正在等待在用户的机器上进行测试。。。。
一旦我能测试出来,我会在这里回复。
 
再次感谢大家,
监考人员

Proctor 发表于 2022-7-6 22:55:39

修复程序:我能够测试代码,但它没有工作
 
以下是我使用的:

Imports System.IO

Dim fullpath As String = path.comine(sBOM_EstimatePath & "CO_TEMPLATE_1Estimate.dwt")
dbTemplate.ReadDwgFile(fullpath, System.IO.FileShare.Read, True, Nothing)

 
我在“工具”->“选项”->“文件”下查看了文件模板位置的路径。。。这是一个当地的位置。你认为我应该删除此位置的所有文件,然后重试吗?
 
再次感谢,
监考人员

fixo 发表于 2022-7-6 23:00:45

不,不,这只是为了提供信息
将模板保存在自己的文件夹中
 
试试这段代码,命令标志会话很重要

      <CommandMethod("openDwt", CommandFlags.Session)> _
       Public Sub OpenDwt()
         Dim doc As Document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument
         Dim newpath As String = ""
         Using docloc As DocumentLock = doc.LockDocument
               Using dbTemplate As New Database(True, False)
                   Dim sBOM_EstimatePath As String = "C:\Test\" '<-- change template folder here
                   Dim fullpath As String = Path.Combine(sBOM_EstimatePath, "CO_TEMPLATE_1Estimate.dwt")
                   dbTemplate.ReadDwgFile(fullpath, System.IO.FileShare.None, False, Nothing)
                   newpath = Path.Combine(sBOM_EstimatePath, "WorkingDrawing.dwg")
                   dbTemplate.SaveAs(newpath, DwgVersion.Current)
                   dbTemplate.Dispose()
               End Using
         End Using
         'check if we're saved this template as dwg file:
         If File.Exists(newpath) Then
               MsgBox(String.Format("Drawing ""{0}"" created from template", newpath), MsgBoxStyle.Information)
         Else
               MsgBox("Problem with creating drawing", MsgBoxStyle.Exclamation)
         End If
       End Sub
未测试。。

Proctor 发表于 2022-7-6 23:07:10

让我试试。。。。。。如果有帮助,我会告诉你。
 
非常感谢。
 
监考人员

fixo 发表于 2022-7-6 23:12:01

嗨,菲索:不幸的是。。。它在那条线上出错了。我得到了一个未命名的访问读取违规。
 
今天我将在用户的机器上尝试一些东西。我将在她的机器上搜索模板,看看它还能从哪里提取,因为我知道它无法从web服务器上获取最新的模板。
 
此外,我将从浏览器中查看是否可以从用户的机器中打开图形模板。
 
也许这能帮我解决更多的麻烦。我会告诉你我发现了什么。
 
再次感谢。。。
 
监考人员

Proctor 发表于 2022-7-6 23:17:56

对于这种情况,最让我窃笑的是。。。当代码在这个用户的机器上运行时,它一点也不抱怨;它确实拉了一个非常相似的模板;但是,它是一个旧模板…而不是当前位于此位置的web服务器中的模板…。这个模板是从哪里来的?你知道我怎么知道吗?如果我能找到它并把它处理掉,也许就能解决这个问题?
我从用户机器上运行了浏览器中的url,它调出了模板,所以我认为这不是任何权限问题。
再次感谢大家,
监考人员

fixo 发表于 2022-7-6 23:26:24

Proctor 发表于 2022-7-6 23:33:11

let me give it a try......i'll let you know if it helps.
 
thank you!
 
Proctor
页: [1] 2
查看完整版本: 模板期初问题