Макрос: Вставка разверток из листовых моделей в чертеж

Автор bionorica2015, 06.07.21, 19:15:59

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

bionorica2015

Здавствуйте!
У меня есть около 50 листовых деталей.
Мне нужно загнать развертки всех моделей в один чертеж-чтобы тдать лазерщику одним файлом.

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



Архиватор у меня старый и я его принципиально не обновляю, чтобы мои архивы могли все открыть, Ваш я открыть не могу.
Непонятно, зачем на лазере нужен CDW со всеми деталями?
Обычно нужны DXF.
Вам просто нужно сделать то, что у Вас в макросе циклом, сделали вид развертки, получили габарит вида, сдвинули относительно тех видов которые есть.


Федя, код выложи или не мешай.
PS. Немного другая ветка, ненужно рекламировать.


bionorica2015

Цитата: Sabahs от 07.07.21, 05:51:13Архиватор у меня старый и я его принципиально не обновляю, чтобы мои архивы могли все открыть, Ваш я открыть не могу.
Непонятно, зачем на лазере нужен CDW со всеми деталями?
Обычно нужны DXF.
Вам просто нужно сделать то, что у Вас в макросе циклом, сделали вид развертки, получили габарит вида, сдвинули относительно тех видов которые есть.

cdw нужен для вставки разверток всех деталей-моделей в cdw чертеж и затем сохранить в dxf/
Мне нужно лишь формула цикла


Библиотека разверток, тоже делает все развертки со сборки.
PS. Но тут тема про код.



Вират Лакх

Цитата: bionorica2015 от 06.07.21, 19:15:59для всех моделей содержащиеся в одном файле
Для всех компонентов сборки? На один уровень или рекурсивно на всю глубину? Для одного уровня:
...
parts = iKompasDocument3D.TopPart.PartsEx(1) # Первые экземпляры вставок компонентов без учета исключенных из расчета
if parts:
    for iPart7 in parts:
        if iPart7.Detail and not API7.IFeature7(iPart7).Excluded and not iPart7.IsLayoutGeometry and not iPart7.IsLocal:
            ...
            iAssociationViewParam.fileName = iPart7.FileName
            ...

bionorica2015

Этот код вставить в свой макрос и все будет работать для всех моделей в одном файле?
Или где-то нужно делать поправки?

Вират Лакх

Копи-пастом тут не обойтись. Я написал основу цикла. До него и тело цикла вам нужно дописать (вместо многоточия). Обратите внимание на отступы. Вам нужно от iAssociationViewParam и дальше сдвинуть строки как у меня. Строку с fileName заменить на мою. Ну и прочитать и понять, что тут в коде и, вообще, в вашем макросе написано.

bionorica2015

Честно говоря не понял
Где можно нормально почитать теорию на эту тему плиз подскажите

Вот мой код
# -*- coding: cp1251 -*-
#|раскрой

import Kompas10API5 as KAPI
import Kompas10API7 as KAPI7
import pythoncom
from win32com.client import Dispatch
import LDefin2D
import LDefin3D
import ksConstants as CONST2D7
import ksConstants3D as CONST3D7
import MiscellaneousHelpers as MH

iKompasObject = Dispatch('KOMPAS.Application.5')
iKompasObject = KAPI.KompasObject(iKompasObject)
MH.iKompasObject = iKompasObject

iApplication = Dispatch('KOMPAS.Application.7')
iApplication = KAPI7.IApplication(iApplication)
MH.iApplication = iApplication

iDocument2D = iKompasObject.ActiveDocument2D()
iDocument = iApplication.ActiveDocument
iKompasDocument2D = KAPI7.IKompasDocument2D(iDocument)


iAssociationViewParam = KAPI.ksAssociationViewParam(iKompasObject.GetParamStruct(LDefin2D.ko_AssociationViewParam))
iAssociationViewParam.Init()
iAssociationViewParam.disassembly = False
iAssociationViewParam.fileName = "C:/Users/Acer/Desktop/Механика/Маленький вариант/Крышка.m3d"
iAssociationViewParam.hiddenLinesShow = False
iAssociationViewParam.hiddenLinesStyle = 4
iAssociationViewParam.projBodies = True
iAssociationViewParam.projectionLink = False
iAssociationViewParam.projectionName = "#Развертка"
iAssociationViewParam.projSurfaces = False
iAssociationViewParam.projThreads = True
iAssociationViewParam.sameHatch = False
iAssociationViewParam.section = False
iAssociationViewParam.tangentEdgesShow = False
iAssociationViewParam.tangentEdgesStyle = 2
iAssociationViewParam.visibleLinesStyle = 1

iViewParam = KAPI.ksViewParam(iAssociationViewParam.GetViewParam())
iViewParam.Init()
iViewParam.angle = 0.0
iViewParam.color = 0
iViewParam.name = "Вид 6"
iViewParam.scale_ = 1.0
iViewParam.state = 3
iViewParam.x = 43.94521901021
iViewParam.y = -116.86054147425

iDocument2D.ksCreateSheetArbitraryView(iAssociationViewParam, 0)
Или если время есть и желание есть научить, напишите чтобы я понял
Спасибо заранее!