Перейти к публикации

Рекомендованные сообщения

стоять выбор "нов"? Это когда чертеж по извещению вводится.
НОВ - это когда новый лист вводится, если вы вводите новый документ, то в нём ни каких извещений не значится, т.к. ни каких изменений в нём не было.

 

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


Если вы заменяете лист, то пишется на первую строку, если продолжаете, то пишете в следующей сроке выше.

мы заменяем лист. Но пишем в следующей строке. Чтобы можно было легко искать извещения. Тяжело придерживаться ГОСТ когда электронно-бумажный оборот КД


НОВ - это когда новый лист вводится, если вы вводите новый документ, то в нём ни каких извещений не значится, т.к. ни каких изменений в нём не было.

по извещению вводим новую деталь в сборку. И на чертеже пишем "нов" и номер извещения. 

Ссылка на сообщение
Поделиться на других сайтах
Тяжело придерживаться ГОСТ когда электронно-бумажный оборот КД
При работе с файлами как раз легко всё искать и сортировать, например, в имени файла можно указать литеру изменений и при необходимости извещение, напирмер, АААА.123456.123изм01_020-2015_Наименование.расширение

или для вновь выпущенного документа по извещению:

АААА.123456.200изм00_020-2015_Наименование.расширение

или просто новый документ в новом изделии:

АААА.123456.201изм00_Наименование.расширение

 

 

Если какие-то документы-подленники выпущены на бумаге, то на электронном документе-оригинале можно сделать пометку, например, подчёркивание перед изм: АААА.123456.123-УЛ_изм01_020-2015_Наименование.расширение , что бы знать что подлинник на бумаге.

 

по извещению вводим новую деталь в сборку. И на чертеже пишем "нов" и номер извещения.
Ну сейчас ГОСТ не очень обязательны, поэтому можно творить, что больше нравится, но на мой скромный взгляд ваши действия не правильны, т.к. в табличке основной надписи внося изменения подлинника, а при выпуске нового документа ни каких изменений в документе вы не делаете, а соответственно заполнять таблицу об изменении не корректно (но тут уж хозяин барин).
Ссылка на сообщение
Поделиться на других сайтах
Настроил в PDM задачу печати. Для разных форматов настроил свои принтеры\плоттеры. Но вот незадача - все печатается на А4. Такое "очучение", что макрос не может считать формат чертежа.

Если макрос тот, что в приложенном файле, то вероятно проблема в том, что макрос не определяет размер листа для печати, а наоборот заменяет его на тот, что установлен по умолчанию, в вашем случае как раз А4 и ориентация тоже вероятно не правильная:

 

    ' Paper size and orientation

    If Not ([__printer_usedrwnfo] And docType = swDocDRAWING) Then

        swPageSetup.PrinterPaperSize = GetPaperSize( [__printer_defpapsize] )    

        swPageSetup.Orientation = [__printer_deforientation] + 1

    End If

А должны как раз определить размер листа, ориентацию из документа и указать его при печати, например:

 

    ' Берём настройки листа

    vSheetProps = swSheet.GetProperties

 

'определяем ориентацию

If vSheetProps(5) <= vSheetProps(6) Then

swPageSetup.Orientation = [__printer_deforientation] '...тут обозначение вертикальный...

Else

swPageSetup.Orientation = [__printer_deforientation]+1 '...тут обозначение вертикальный...

End if

 

'определяем размер листа '!ОШИБСЯ СМОТРИ НИЖЕ!

If (vSheetProps(5) <= 0.21 And vSheetProps(6) <= 0.297) or (vSheetProps(5) <= 0.297 And vSheetProps(6) <= 0.21) Then 'A4

swPageSetup.PrinterPaperSize = GetPaperSize( [__printer_papsize_A4] )

ElseIf (vSheetProps(5) <= 0.21 And vSheetProps(6) <= 0.297) or (vSheetProps(5) <= 0.297 And vSheetProps(6) <= 0.21) Then 'A3

swPageSetup.PrinterPaperSize = GetPaperSize( [__printer_papsize_A3] )

...

...

End If '!ОШИБСЯ СМОТРИ НИЖЕ!

 

 

Так же проверяем правильные ли номера присвоены форматам в строках (цифра или сумма цифр тех что после равно, формат для которого данная цифра дальше в строке):

 

Function GetPaperSize(paperSize)

    Select Case paperSize

        Case 0, 1

            paperSizeNum = 256 + 6 'DMPAPER_ASHEET     DMPAPER_USER+6

        Case 2

            paperSizeNum = 256 + 7 'DMPAPER_BSHEET     DMPAPER_USER+7

        Case 3

            paperSizeNum = 24 'DMPAPER_CSHEET

        Case 4

            paperSizeNum = 25 'DMPAPER_DSHEET

        Case 5

            paperSizeNum = 26 'DMPAPER_ESHEET

        Case 6

            paperSizeNum = 256 + 4 'DMPAPER_A0  DMPAPER_USER+4

        Case 7

            paperSizeNum = 256 + 5 'DMPAPER_A1  DMPAPER_USER+5

        Case 8

            paperSizeNum = 66 'DMPAPER_A2

        Case 9

            paperSizeNum = 8 'DMPAPER_A3

        Case 10

            paperSizeNum = 9 'DMPAPER_A4

        Case 11

            paperSizeNum = 77 'DMPAPER_A4_ROTATED

        Case Else

            paperSizeNum = 9 'DMPAPER_A4

    End Select

    GetPaperSize = paperSizeNum

End Function

Для этого можно воспользоваться утилитой Список форматов выбранного принтера: http://kelnyproject.ucoz.ru/load/spisok_formatov_vybrannogo_printera/7-1-0-26

 

Думается как-то так. Может в коде не до конца разобрался, но направление примерно обозначено.

Ссылка на сообщение
Поделиться на других сайтах

Вопросик: А вус там будет пред цифрой 1 один стоять выбор "нов"? Это когда чертеж по извещению вводится.

наверное всётаки не ПЕРЕД цифрой "1", а ПОСЛЕ. в списке можно выбрать Нов., Зам. (мне он лучше всех нравица) и Изм.

 

А также новые извещения будут писаться выше, или будут заменять старое?

заменяют старое. верне заменяет текст в заметке.

Ссылка на сообщение
Поделиться на других сайтах
При работе с файлами как раз легко всё искать и сортировать,

КД работает с электронной версией, а все остальные с бумажной. В том числе и те кто "ищет изменения". Т.е. электронный вариант, только у конструктора. Вот и приходится все изменения печатать.

заменяют старое. вернее заменяет текст в заметке.

а добавить функцию не замены а написания выше моно? 


Kelny, спс, будем разбираться
Ссылка на сообщение
Поделиться на других сайтах
а добавить функцию не замены а написания выше моно? 

конеш моно. тока тада надо придумать как быть со старыми заметками. куда информацию о них девать. 

Ссылка на сообщение
Поделиться на других сайтах

Kelny, не помогло.Капаю дальше.

НО проблема правильна:

 

проблема в том, что макрос не определяет размер листа для печати, а наоборот заменяет его на тот, что установлен по умолчанию

У меня все гонит все в А4-масштабирует усе до А4.

 

Не могу понять, где загвоздка с считыванием формата

Ссылка на сообщение
Поделиться на других сайтах
не помогло.Капаю дальше.

Что именно не помогло?

Попробуйте вообще исключить настройки выбора ориентации из макроса, настройте эти данные в документах и попробуйте произвесит печать, тогда, если в документе настройки правильны, то с некоторой доли вероятности может распечатать правильно на нужных форматах.

 

Пытался встроить в ваш макрос, но вероятно можно ещё проще (так же выше ошибся скопировав обе строки для А4), предлагаю следующий алгоритм определения размера листа (или брать размер листа из свойств, если таковой параметр добавляется в свойства чертежа при заполнении основной надписи с помощь макросов):

 

'определяем размер листа

If (vSheetProps(5) <= 0.21 or vSheetProps(6) <= 0.21) and (vSheetProps(5) <= 0.297 And vSheetProps(6) <= 0.297) Then 'A4 если одна из сторон меньше или равна 210мм и обе стороны листа меньше 297мм

swPageSetup.PrinterPaperSize = 9 'A4

ElseIf (vSheetProps(5) > 0.21 or vSheetProps(6) > 0.21) and (vSheetProps(5) <= 0.420 And vSheetProps(6) <= 0.42) Then 'A3 если одна из сторон больше ширины А4 (210мм) и обе стороны меньше или равно длинне АЗ (420мм), то выбираем формат А3, если нет идём дальше по списку

swPageSetup.PrinterPaperSize = 8 'A3

...

...

End If

Правильные цифровые значения значения размеров для бумаги для каждого принтера определяем например с помощью приведённой выше программы.

Ссылка на сообщение
Поделиться на других сайтах

Kelny буду побывать.

А макрос - он мой, это стандартный из PDM. И я так понимаю он настроен под стандартные шаблоны Solidworks. Но у меня шаблоны от SWPlus. И я ни как не могу понять иде именно записаны и от куда считываются размеры листа


так же выше ошибся скопировав обе строки для А4

видел, но смысл уловил.. не помогло...

все равно на А4 печатает. Даже если по умолчанию выбираю А2,А3 или А1 


Может где-то нужно в шаблоне ка-то записать размеры листа?

Ссылка на сообщение
Поделиться на других сайтах
И я ни как не могу понять иде именно записаны и от куда считываются размеры листа

У вас стоит галочка считывать размеры листа из файла - это как минимум намекает, что используется настройки сохранённые в документе.

Был не внимательным, в макросе одним из условием выбора листа по умолчанию указывается отсутствие этой галочки (использовать размеры листа из документа):

    ' Paper size and orientation

 If Not ([__printer_usedrwnfo] And docType = swDocDRAWING) Then

Соответственно мы пролетаем мимо самостоятельного выбора (если эти условия были оставлены для входа внутрь этого условия), а если мы сами подбираем лист то вероятно стоит снять эту галочку (или предварительно в документах задать параметры листа) по размерам листа, то на нужно проверить лишь условие, что это чертёж и тогда будет наша процедура определения размеров и ориентации:

    ' Paper size and orientation

 If docType = swDocDRAWING Then

'тут выбор размера листа

end if

Ссылка на сообщение
Поделиться на других сайтах
что используется настройки сохранённые в документе

я не делал ни каких настроек в документе! Знать бы какие нужно сделать


Задача проста же: нажать на печать и чтобы PDM сама раскидала листы по принтерам...оказывается это не так просто

Ссылка на сообщение
Поделиться на других сайтах
я не делал ни каких настроек в документе! Знать бы какие нужно сделать

Открыть документ и настроить параметры печати, после этого сохранить документ, а потом печатать через программу с параметром настроек из документа чертежа.

 

 

 

адача проста же: нажать на печать и чтобы PDM сама раскидала листы по принтерам...оказывается это не так просто

Так макросом не удалось изменить формат для вывода? например, если просто перед строкой печати

 

    ' Print file

    swExtension.PrintOut2 vPrintSheets, iNumCopies, False, printer, ""

задать размер листа и выбрать подходящий принтер:

 

'перед печатью меняем размер выбранного листа в свойствах документа

swPageSetup.PrinterPaperSize =8

'DMPAPER_A3 - данная строка меняет размер листа в настройках открытого

'для печати документа на номер 8, что соответсвует формату А3

 

'Выбираем принтер для печати

    ' Printer

    printer = "тут_имя_локально_принтера_или_путь_к_сетевому"

'например "HP Universal Printing PCL 5" или "\\SERVER\HP Universal Printing PCL 5"

 

' Print file - печатает открытый файл

    swExtension.PrintOut2 vPrintSheets, iNumCopies, False, printer, "" 'PrintOut2(PageArray, Copies, Collate, Printer, PrintFileName)

Если всё получится поменять формат листа и принтер для печати, то логику выбора формата и принтера можно прописать здесь (проигнорировав предыдущие настройки программы).

Ссылка на сообщение
Поделиться на других сайтах
  • 3 недели спустя...

Подскажите, настроил макрос давно под себя, сейчас захотел исправить и забыл пароль, можно ли его как то восстановить или что то подобное?

Ссылка на сообщение
Поделиться на других сайтах

 

ни в пакете макросов SWPlus ни в SWPlus.Net нет ничего что требовало бы пароля или чего-то подобного. да приложения или макроса с именем "Ok" там тоже нет.

 

upd

пардон-с. тупанул-с t140046.gif

Изменено пользователем fox1001
Ссылка на сообщение
Поделиться на других сайтах

ни в пакете макросов SWPlus ни в SWPlus.Net нет ничего что требовало бы пароля или чего-то подобного. да приложения или макроса с именем "Ok" там тоже нет.

Макрос мой, обратился просто к знатокам.

Ссылка на сообщение
Поделиться на других сайтах

Товарищи!

Как из макроса VBA получить вычисленное значение свойств пользователя? (выделено красным)

post-9229-0-49887100-1440196853_thumb.png

 

Стандартная функция возвращает текстовое выражение

Dim modelDocProperty As String    
Dim swModelDocExt As ModelDocExtension
Dim swCustProp As CustomPropertyManager
Dim ok As Integer

Set swModelDocExt = Model.Extension
Set swCustProp = swModelDocExt.CustomPropertyManager("ккуц")
ok = swCustProp.Get5("Масса", False, modelDocProperty, 0, 0)

' ModelDocProperty => "SW-Mass@@ккуц@Деталь1.SLDPRT"

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

Ссылка на сообщение
Поделиться на других сайтах

Товарищи!

Как из макроса VBA получить вычисленное значение свойств пользователя? (выделено красным)

attachicon.gif2015-08-22 01-37-04 Скриншот экрана.png

 

Стандартная функция возвращает текстовое выражение

Dim modelDocProperty As String    
Dim swModelDocExt As ModelDocExtension
Dim swCustProp As CustomPropertyManager
Dim ok As Integer

Set swModelDocExt = Model.Extension
Set swCustProp = swModelDocExt.CustomPropertyManager("ккуц")
ok = swCustProp.Get5("Масса", False, modelDocProperty, 0, 0)

' ModelDocProperty => "SW-Mass@@ккуц@Деталь1.SLDPRT"

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

в строке

ok = swCustProp.Get5("Масса", False, modelDocProperty, 0, 0)

вместо предпоследнего нуля должна быть строковая переменная в которую процедура и записывает вычисленное значение свойства. в переменной modelDocProperty будет записано значение свойства. ну и вместо последнего нуля должна быть булева переменная (True или False)подробнее тут Get5, и пример

 

полагаю нужно вот так:

Dim modelDocProperty As String

Dim DValueProp As String
Dim boolProp As Boolean

Dim swModelDocExt As ModelDocExtension
Dim swCustProp As CustomPropertyManager
Dim ok As Integer

Set swModelDocExt = Model.Extension
Set swCustProp = swModelDocExt.CustomPropertyManager("ккуц")
ok = swCustProp.Get5("Масса", False, modelDocProperty, DValueProp , boolProp)

в DValueProp будет записано вычисленное значение свойства.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...