| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Lisp. Удаление «Свойств чертежа» из свойств DWG файла средствами скрипта

Lisp. Удаление «Свойств чертежа» из свойств DWG файла средствами скрипта

Ответ
Поиск в этой теме
Непрочитано 03.12.2015, 11:02 #1
Lisp. Удаление «Свойств чертежа» из свойств DWG файла средствами скрипта
eGreyWolf
 
Регистрация: 04.02.2011
Сообщений: 7

Уважаемые коллеги! Прошу Вашей помощи с лиспом.
Речь о свойствах документа, доступных по команде _DWGPROPS или меню «Файл» —> «Свойства чертежа».
Программа «максимум» — конечно, покиллить всё, но сейчас задача, главным образом, очистить вкладку "Свойства чертежа —> Документ».
Эти свойства "Документа" видны из под ОС. Однако штатные средства ОС (через функцию "Удаление свойств и личной информации") такие данные не очищают. Видимо, они внедряются в ОС средствами API Acad-а, и лишь отображаются в ОС.

Свойства, видимые из Explorer-а:



Попытка удаления свойств средствами операционной системы:

В поисках решения проблемы нашел средство на .cs, но для меня лично - это очень и серьёзно, и не по задаче. Да и не компетентен я в этом, увы.
Вопрос-просьба к Вам, компетентным камрадам, подскажите, пожалуйста, кусочек кода на лиспе, который можно было бы встроить в действующий сценарий, в батч для обработки файлового массива документов, поступающих от подрядчиков. Или, если есть такая недокументированная возможность, то средствами Acad-а.
Заранее спасибо!
Просмотров: 5878
 
Непрочитано 03.12.2015, 14:28
1 | #2
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,295
Отправить сообщение для doctorraz с помощью Skype™


от VBA Enabler, что бы тут не говорили есть несомненная польза, с ним идет неплохая справка с примерами по VBA и Lisp.
В примерах ниже доступ к основным и "прочим" свойствам документа.
VBA Example
Код:
[Выделить все]
Sub Example_SummaryInfo()
    ' This example shows how to access drawing properties
            
    ' Add and display standard properties
    ThisDrawing.SummaryInfo.Author = "John Doe"
    ThisDrawing.SummaryInfo.Comments = "Includes all ten levels of Building Five"
    ThisDrawing.SummaryInfo.HyperlinkBase = "http://www.autodesk.com"
    ThisDrawing.SummaryInfo.Keywords = "Building Complex"
    ThisDrawing.SummaryInfo.LastSavedBy = "JD"
    ThisDrawing.SummaryInfo.RevisionNumber = "4"
    ThisDrawing.SummaryInfo.Subject = "Plan for Building Five"
    ThisDrawing.SummaryInfo.Title = "Building Five"

    Author = ThisDrawing.SummaryInfo.Author
    Comments = ThisDrawing.SummaryInfo.Comments
    HLB = ThisDrawing.SummaryInfo.HyperlinkBase
    KW = ThisDrawing.SummaryInfo.Keywords
    LSB = ThisDrawing.SummaryInfo.LastSavedBy
    RN = ThisDrawing.SummaryInfo.RevisionNumber
    Subject = ThisDrawing.SummaryInfo.Subject
    Title = ThisDrawing.SummaryInfo.Title
    MsgBox "The standard drawing properties are " & vbCrLf & _
            "Author = " & Author & vbCrLf & _
            "Comments = " & Comments & vbCrLf & _
            "HyperlinkBase = " & HLB & vbCrLf & _
            "Keywords = " & KW & vbCrLf & _
            "LastSavedBy = " & LSB & vbCrLf & _
            "RevisionNumber = " & RN & vbCrLf & _
            "Subject = " & Subject & vbCrLf & _
            "Title = " & Title & vbCrLf

    ' Add and display custom properties
    Dim Key0 As String
    Dim Value0 As String
    Dim Key1 As String
    Dim Value1 As String
    Dim CustomPropertyBranch As String
    Dim PropertyBranchValue As String
    Dim CustomPropertyZone As String
    Dim PropertyZoneValue As String

    CustomPropertyBranch = "Branch"
    PropertyBranchValue = "Main"
    CustomPropertyZone = "Zone"
    PropertyZoneValue = "Industrial"

    ' Add custom properties
    If (ThisDrawing.SummaryInfo.NumCustomInfo >= 1) Then
        ThisDrawing.SummaryInfo.SetCustomByIndex 0, CustomPropertyBranch, PropertyBranchValue
    Else
        ThisDrawing.SummaryInfo.AddCustomInfo CustomPropertyBranch, PropertyBranchValue
    End If

    If (ThisDrawing.SummaryInfo.NumCustomInfo >= 2) Then
         ThisDrawing.SummaryInfo.SetCustomByKey CustomPropertyBranch, "Satellite"
    Else
         ThisDrawing.SummaryInfo.AddCustomInfo CustomPropertyZone, PropertyZoneValue
    End If

    'Get custom properties
    ThisDrawing.SummaryInfo.GetCustomByIndex 0, Key0, Value0
    Key1 = CustomPropertyZone
    ThisDrawing.SummaryInfo.GetCustomByKey Key1, Value1

    MsgBox "The custom drawing properties are " & vbCrLf & _
            "First property name = " & Key0 & vbCrLf & _
            "First property value = " & Value0 & vbCrLf & _
            "Second property name = " & Key1 & vbCrLf & _
            "Second property value = " & Value1 & vbCrLf
End Sub
Visual LISP Example
Код:
[Выделить все]
 (vl-load-com)
(defun c:Example_SummaryInfo()
    ;; This example shows how to access drawing properties
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))
    (setq summaryInfo (vla-get-SummaryInfo doc))
  
    ;; Add and display standard properties
    (vla-put-Author summaryInfo "John Doe")
    (vla-put-Comments summaryInfo "Includes all ten levels of Building Five")
    (vla-put-HyperlinkBase summaryInfo "http://www.autodesk.com")
    (vla-put-Keywords summaryInfo "Building Complex")
    (vla-put-LastSavedBy summaryInfo "JD")
    (vla-put-RevisionNumber summaryInfo "4")
    (vla-put-Subject summaryInfo "Plan for Building Five")
    (vla-put-Title summaryInfo "Building Five")

    (setq author (vla-get-Author summaryInfo))
    (setq comments (vla-get-Comments summaryInfo))
    (setq HLB (vla-get-HyperlinkBase summaryInfo))
    (setq KW (vla-get-Keywords summaryInfo))
    (setq LSB (vla-get-LastSavedBy summaryInfo))
    (setq RN (vla-get-RevisionNumber summaryInfo))
    (setq subject (vla-get-Subject summaryInfo))
    (setq Title (vla-get-Title summaryInfo))
    (alert (strcat "The standard drawing properties are "
                   "\nAuthor = " author
                   "\nComments = " comments
                   "\nHyperlinkBase = " HLB
                   "\nKeywords = " KW
                   "\nLastSavedBy = " LSB
                   "\nRevisionNumber = " RN
                   "\nSubject = " Subject
                   "\nTitle = " Title
           )
    )
  
    ;; Add and display custom properties
    (setq CustomPropertyBranch "Branch")
    (setq PropertyBranchValue "Main")
    (setq CustomPropertyZone "Zone")
    (setq PropertyZoneValue "Industrial")

    ;; Add custom properties
    (if (>= (vla-NumCustomInfo summaryInfo) 1)
        (vla-SetCustomByIndex summaryInfo 0 CustomPropertyBranch PropertyBranchValue)
        (vla-AddCustomInfo summaryInfo CustomPropertyBranch PropertyBranchValue)
    )

    (if (>= (vla-NumCustomInfo summaryInfo) 2)
        (vla-SetCustomByKey summaryInfo CustomPropertyBranch "Satellite")
        (vla-AddCustomInfo summaryInfo CustomPropertyZone PropertyZoneValue)
    )

    ;; Get custom properties
    (vla-GetCustomByIndex summaryInfo 0 'Key0 'Value0)
    (setq Key1 CustomPropertyZone)
    (vla-GetCustomByKey summaryInfo Key1 'Value1)
  
    (alert (strcat "The custom drawing properties are "
                   "\nFirst property name = " Key0
                   "\nFirst property value = " Value0
                   "\nSecond property name = " Key1
                   "\nSecond property value = " Value1
           )
    )
)
__________________
Мастерская СПДС
doctorraz вне форума  
 
Автор темы   Непрочитано 03.12.2015, 15:38
#3
eGreyWolf


 
Регистрация: 04.02.2011
Сообщений: 7


doctorraz, спасибо, коллега, БОЛЬШОЕ. Это оно. Вопрос можно считать закрытым.
eGreyWolf вне форума  
 
Автор темы   Непрочитано 07.12.2015, 17:31
#4
eGreyWolf


 
Регистрация: 04.02.2011
Сообщений: 7


Оказывается вопрос не закрыт, увы.
Подскажите, пожалуйста, коллеги, как называются поля (или индексы) на вкладке "Статистика"?
Не могу найти поиском... Что-то типа: LastSavedDate, CreatedDate?

Спасибо!
eGreyWolf вне форума  
 
Непрочитано 07.12.2015, 18:03
#5
kacugu

начинающий инженер-гидротехник
 
Регистрация: 18.04.2010
Санкт-Петербург
Сообщений: 893


Offtop: Если не секрет, то для чего вам это?

Последний раз редактировалось kacugu, 07.12.2015 в 18:12.
kacugu вне форума  
 
Непрочитано 07.12.2015, 18:21
#6
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,295
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от eGreyWolf Посмотреть сообщение
Подскажите, пожалуйста, коллеги, как называются поля (или индексы) на вкладке "Статистика"?
Не могу найти поиском... Что-то типа: LastSavedDate, CreatedDate?
как на лиспе не силен, а на VBA это должно быть решаемо.
Если пояндексить по запросу: vba модифицировать дату создания файла
__________________
Мастерская СПДС

Последний раз редактировалось doctorraz, 08.12.2015 в 10:37.
doctorraz вне форума  
 
Автор темы   Непрочитано 08.12.2015, 08:51
#7
eGreyWolf


 
Регистрация: 04.02.2011
Сообщений: 7


Offtop: kacugu, секретов нет и я об этом сказал в первом же сообщении. А причин может быть море и маленькая ложка: например, от сдачи материалов, в соответствии с требованиями той страны, в экспертизу; до срочного наведения порядка в файловых массивах и перевода предприятия на электронный архив/документооборот в связи с изменениями ИТ-стратегии и политики. Полагаю, следующим вопросом по теме форума будет о моих вероисповеданиях и сексуальных наклонностях супруги?
Ув. doctorraz, спасибо в очередной раз за неравнодушие!
Жаль, показанная Вами ссыль, увы, колоченная. Да дело то, на самом деле, осталось за малым - необходимо только имя поля в свойствах SummaryInfo. Гугл говорит, что оно не то, что я предположил чуть выше выше.
eGreyWolf вне форума  
 
Непрочитано 08.12.2015, 09:43
1 | #8
kacugu

начинающий инженер-гидротехник
 
Регистрация: 18.04.2010
Санкт-Петербург
Сообщений: 893


Offtop: В первом сообщении вы ничего не сказали по поводу "зачем это нужно?" Когда знаешь что нужно и зачем это нужно - проще помочь. Лично мне, видимо в силу испорченности, первой пришла мысль, что вы хотите чужие чертежи выдать за свои)
А вот названия этих переменных:
https://knowledge.autodesk.com/suppo...0DEC3-htm.html
kacugu вне форума  
 
Непрочитано 08.12.2015, 10:35
1 | #9
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,295
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от eGreyWolf Посмотреть сообщение
необходимо только имя поля в свойствах SummaryInfo. Гугл говорит, что оно не то, что я предположил чуть выше выше.
насколько я понял, ни через SummaryInfo ни через Custom до дат не достучаться по причине ихнего там отсутствия, это системные свойства файлов(((
но через API средствами VBA делается легко
Думаю излишне писать, что файл должен быть закрыт.

----- добавлено через ~48 мин. -----
Цитата:
Сообщение от kacugu Посмотреть сообщение
А вот названия этих переменных:
https://knowledge.autodesk.com/suppo...0DEC3-htm.html
тогда уж TDCREATE, TDUPDATE, только они read_onli
__________________
Мастерская СПДС

Последний раз редактировалось doctorraz, 08.12.2015 в 11:45.
doctorraz вне форума  
 
Автор темы   Непрочитано 08.12.2015, 13:08
#10
eGreyWolf


 
Регистрация: 04.02.2011
Сообщений: 7


Спасибо, коллеги!
Мне кажется, здесь не может быть речи об ОС и системных свойствах файла.

Слева, на картинке, свойства ЧЕРТЕЖА, ThisDrawing.SummaryInfo. DWG
А справа - свойства (другого) файла DWG, но из под NTFS. Как видите, количество "свойств" разное: 4 против 7. Теперь смотрим только на картинку справа. Свойства из закладки "Statistics" не совпадают с теми, что видны из ОС в закладке "Общие", хотя говорят об одном и том же событии - LastSavedData.
Дата созданий этого ThisDrawing отличается от даты создания самого ФАЙЛА. И, если бы это были бы системные "свойства", то они должны были бы совпадать. А если ТАК, то, полагаю, эти свойства внедрены через API Acad-а, и достучаться до них, вероятно, можно только ими.
eGreyWolf вне форума  
 
Непрочитано 08.12.2015, 13:39
1 | #11
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,295
Отправить сообщение для doctorraz с помощью Skype™


на первом скрине как поменять я дал ссылку выше, это системные свойства
на втором скрине это TDCREATE, TDUPDATE, они только для чтения,
хотя можно пересохранить файл в dxf и поменять значения этих переменных, не получится так похоже
__________________
Мастерская СПДС

Последний раз редактировалось doctorraz, 08.12.2015 в 14:02.
doctorraz вне форума  
 
Непрочитано 08.12.2015, 15:25
1 | #12
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


Как бы намекну...
http://adn-cis.org/forum/index.php?topic=2972.0
Boxa вне форума  
 
Непрочитано 28.04.2016, 11:05
#13
tujn08


 
Регистрация: 26.12.2013
Сообщений: 284


Друзья!
Ломаю голову битый час.
как получить полный путь с именем открытого он же активный файл на lispe?
т.е. нужна строка : T:\путь\файл.dwg
tujn08 вне форума  
 
Непрочитано 28.04.2016, 11:19
1 | #14
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


DWGPREFIX+DWGNAME
gomer вне форума  
 
Непрочитано 28.04.2016, 12:41
#15
tujn08


 
Регистрация: 26.12.2013
Сообщений: 284


Цитата:
Сообщение от gomer Посмотреть сообщение
DWGPREFIX+DWGNAME
спасибо! очень выручили
tujn08 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Lisp. Удаление «Свойств чертежа» из свойств DWG файла средствами скрипта

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ObjectARX. Расчленение и удаление proxy-объектов Profan Готовые программы 293 08.04.2024 09:37
Как удалить тип линии Tolyanovich AutoCAD 48 20.11.2014 09:24
Проблема с чисткой чертежа AntonFox AutoCAD 33 20.02.2013 13:00
результат работ команд purge и audit lex0101 Программирование 23 13.02.2012 08:34
AutoCAD 2011 при копировании не вставляет в другой чертеж Maxxwell AutoCAD 7 07.05.2010 14:44