Тема: Аналог GetOpenFileName в AutoCAD

В Excel для получения имени файла есть функция:

fileToOpen = Application _
    .GetOpenFilename("Text Files (*.txt), *.txt")
If fileToOpen <> False Then
    MsgBox "Open " & fileToOpen
End If

Какой аналог надо применять в AutoCAD чтобы открыть окно выбора файлов и получить имя файла?
Каким образом можно открыть окно выбора файлов используя недокументированные возможности AutoCAD? Мне кажется окно выбора файлов AutoCAD можно вызвать на экран, помогите это сделать пожалуйста!

Re: Аналог GetOpenFileName в AutoCAD

> Миша
Михаил поиск вроде даже я давал ответ на подобный вопрос

Re: Аналог GetOpenFileName в AutoCAD

> SmeL
Здравствуй SmeL!
Я знаю, что раньше мы писали о том что можно использовать функции WindowsAPI, но мне неохота добавлять много кода в программу. Сейчас меня интересуют недокументированные возможности AutoCAD. Мне кажется есть для этого специальная функция в файле acad.exe

Re: Аналог GetOpenFileName в AutoCAD

> Миша
Нема такого
Я использую вот эту, короче врядли найдешь...
(публикую без разрешения автора)

'  written by [b]Sccadmember[/b]
' Date: Aug/04/06
' http://discussion.autodesk.com/thread.jspa?threadID=489202
'Just thought I would post this because I have been looking for a working VBA
'file open dialog box solution for awhile. I'm an old autolisped making the jump
 'to VBA and I have seen and read various solutons for the equivalent getfiled
 'autolisp function but I never had much luck with them. This one worked for me
 'it uses the Win API to do the job.
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
"GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
Public Function ShowOpen(Filter As String, _
InitialDir As String, _
DialogTitle As String) As String
Dim OFName As OPENFILENAME
'Set the structure size
OFName.lStructSize = Len(OFName)
'Set the owner window
OFName.hwndOwner = 0
'Set the filter
OFName.lpstrFilter = Filter
'Set the maximum number of chars
OFName.nMaxFile = 255
'Create a buffer
OFName.lpstrFile = Space(254)
'Create a buffer
OFName.lpstrFileTitle = Space$(254)
'Set the maximum number of chars
OFName.nMaxFileTitle = 255
'Set the initial directory
OFName.lpstrInitialDir = InitialDir
'Set the dialog title
OFName.lpstrTitle = DialogTitle
'no extra flags
OFName.flags = 0
'Show the 'Open File' dialog
If GetOpenFileName(OFName) Then
ShowOpen = Trim(OFName.lpstrFile)
Else
ShowOpen = ""
End If
End Function
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'

Make a form and place the following code listed below on a button
to call the showopen routine.

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
Private Sub CommandButton1_Click()
Dim Filter As String
Dim InitialDir As String
Dim DialogTitle As String
Dim OutputStr As String
Filter = "Drawing Files (*.dwg)" + Chr$(0) + "*.dwg" + Chr$(0) + _
"All Files (*.*)" + Chr$(0) + "*.*" + Chr$(0)
InitialDir = "C:\Program Files\AutoCAD 2006\Sample"
DialogTitle = "Open a DWG file"
OutputStr = ShowOpen(Filter, InitialDir, DialogTitle)
MsgBox OutputStr
End Sub
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'

Поменяй начальную папку на ThisDrawing.Path
~'J'~

Re: Аналог GetOpenFileName в AutoCAD

А я просто вызываю из Автокада эту самую функцию Excel .GetOpenFilename, благо, что, как правило, в моих случаях Excel все равно используется через API.

Re: Аналог GetOpenFileName в AutoCAD

Миша пишет:

но мне неохота добавлять много кода в программу

А мое сугобо личное мнение лучше написать чуть больше кода и воспользоваться на прямую системными ресурсами и не зависить от других конролов, которые все тоже самое делают, но необходимы быть и зарегистрированны в системе.

Re: Аналог GetOpenFileName в AutoCAD

> Миша
Какой аналог надо применять в AutoCAD чтобы открыть окно выбора файлов и получить имя файла?

А почему не использовать контрол -
Microsoft Common Dialog Control 6.0?

Re: Аналог GetOpenFileName в AutoCAD

> LeonidSN
А такое не встречалось в ответ на добавление Additional controls:
The control could not be created because it is not properly licensed?
Думаю вся причина в этом
~'J'~

Re: Аналог GetOpenFileName в AutoCAD

> Fatty
Между нами, девочками, говоря, я и сам из этих... А кто без греха, пусть первым бросит камень. Или, говоря другим языком, не думаю, что программисту-практику такие мелочи всерьез мешают.

Re: Аналог GetOpenFileName в AutoCAD

> LeonidSN
Одобряю :)
>'J'<