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

Автоматизировать создание классифицируемого объекта при создании ICO в классификаторе


asterixik

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

Teamcenter 8.3 толстытй клиент

Суть задачи в следующем: Классы в классификаторе созданы предварительно. Сейчас пользователю приходится создавать ICO, потом создавать Item, заполнять у Item аналогичное ICO наименование, и затем классифицировать этот Item с помощью ICO. Хоется этот процесс несколько упростить, так как предстоит создание нескольких тысяч ICO.

 

Хочется сделать: ответственная персона создает в классификаторе ICO, и затем либо автоматически, либо по команде меню создается классифицируемый этим ICO объект, т.е. например пользователь после создания ICO (этот ICO активен), нажимает кнопку на панели инструментов, появляется окно с выбором типа создаваемого классифицируемого объекта (материал, пки, стандартное изделие и т.п.), и после выбора автоматически создается item нужного типа, инфа для которого (наименование, значения атрибутов) берется из активного ICO  и это объект затем классифицируется активным ICO.

 

Возможно существует стандартная возможность ТС по упрощению процесса создания связанного объекта?

 

Но так или иначе, начал смотреть в сторону кастомизации толстого клиента. И тут незадача, в гайде по кастомизаци полно инфы о том как отобразить ту или иную информацию с Java, а вот как создать итем (с ревизией, мастер формами и т.п.) информации нет совсем. Java практически не знаю (паскалист), курсы по программированию в TC проходил 1,5 года назад, но оно не надо было раньше, и забылось почти все.

 

Отсюда вопросы:

Может кто-нибудь подскажет куда искать/смотреть, или примерчиками поделится  :rolleyes:

Ну или возможно проблема надуманная, и кто-нибудь знает как её проще решить.

 

Сам ранее работал напрямую с БД ТС, а тут вот надо толстого клиента кастомизировать. Напрямую думал создавать записи в БД, но как-то много очень надо таблиц править, боюсь напутать и запортить чего-нибудь.

 

Заранее спасибо.

 

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


Сам ранее работал напрямую с БД ТС, а тут вот надо толстого клиента кастомизировать. Напрямую думал создавать записи в БД, но как-то много очень надо таблиц править, боюсь напутать и запортить чего-нибудь.
 

НИКОГДА НЕ ПИШИТЕ В БАЗУ TC НАПРЯМУЮ!


Ну или возможно проблема надуманная, и кто-нибудь знает как её проще решить.
 

а чего вы на выходе хотите получить?

в чем прикол то?

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

Так я и не пишу. У меня пока была необходимость отображать ту или иную информацию из БД ТС. В принципе наработки по редактированию есть кое-какие, но в продакшен они не пошли.

 

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

 

Сейчас: они создают в классификаторе ICO, заполняют необходимые атрибуты. Потом Идут в Мой Teamcenter, создают там Item нужного типа, наименовывают его так же как и ICO, заполняют если есть свойства мастер-формы аналогично атрибутам ICO, и затем классифицируют этот Item (точнее Item Revision) созданным ICO. Так есть на данный момент.

 

А хочется чтобы: создали ICO, заполнили атрибуты, потом либо по нажатию кнопки сохранения нового ICO, либо по нажатию отдельной кнопки (выполнения команды меню), по активному ICO  выдавался бы запрос типа создаваемого Item-а (в идеале хорошо бы завязать как-нибудь типы создаваемых Item-ов на классы классификатора) и затем создавался бы  Item, наименование которого бы совпадало с наименованием ICO, и часть инфы из атрибутов ICO заполнялось бы в ассоциированные свойства мастер-формы (в идеале!), и после этого Item бы классифицировался этим самым ICO.

 

То бишь облегчить и ускорить ввод инфы в классификатор ТС. На выходе хочется получить заполненный классификатор, в котором каждый ICO будет иметь классифицированный им Item, готовый для использования в разработке КД.

 

Вариант с заполнением инфы в Excel и генерацией PLMXML с последующим импортом пройден, и отклонен из-за большего варианта ошибки пользователя при вводе инфы.

 

З.Ы.: Идея решить задачу прямой записью в БД ТС была, но прикинул какую кучу записей о новых объектах, и ещё большую кучу записей о связях между этими объектами придется  создавать... и как-то не рискнул.

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

именно так - писать код.

 

+ вы можете атрибуты объектов (не всех типов,увы) производных от workspaceobject связывать с атрибутами классов классификатора, отрпаляя какой нить айтем в какой нить класс, атрибуты последнего всосут величины из атрибутов айтема, не решение вашей задачи но так, для справки.

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

именно так - писать код.

 

+ вы можете атрибуты объектов (не всех типов,увы) производных от workspaceobject связывать с атрибутами классов классификатора, отрпаляя какой нить айтем в какой нить класс, атрибуты последнего всосут величины из атрибутов айтема, не решение вашей задачи но так, для справки.

Так в том то и проблема, что в идущем с ТС rich_client_customization_programmer_gd.pdf есть примеры того как отображается информация о тех или иных объектах ТС, но совершенно нет примеров добавления/редактирования информации об объектах ТС. 

 

Т.е. совершенно не понятно как там это делается. Да с учетом практически 0-вых знаний Java - вообще беда. 

 

Коллеги, откуда вы берете информацию по разработке на Java для толстого клиента? Может кто-нибудь примерчиками хотя бы какими-нибудь поделится, или направит в нужное русло  поиска знаний.

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

Т.о. по сути задача сводится к следующим подзадачам насколько я понимаю:

  1. Вывести диалог с выбором типа Item-а
  2. Получить выделенный ICO
  3. Создать Item типа выбранного в п.1 и наименования в соответствие с п.2
  4. Заполнить свойства Item-а инфой из п.2
  5. Классифицировать ревизию п3. -> п.2

Может кто-нибудь предоставить примеры кода помогающего решить подставленные подзадачи, или хотя бы дающег направления для дальнейших изысканий? Просмотрел форумы на GTAC - ничего подходящего не нашёл :-(

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

 

Может кто-нибудь предоставить примеры кода помогающего решить подставленные подзадачи, или хотя бы дающег направления для дальнейших изысканий? Просмотрел форумы на GTAC - ничего подходящего не нашёл :-(

 на gtac помимо форумов есть и sarch solution center. там полно примеров кода ITK(c/c++)

на ява не обязательно все вчистую делать. можно на ява сделать интерфейс, а сам код написать на ITK и вызывать из java.

есть еще SOA

 

выбирайте

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

Думаю попробовать реализовать с помощью SOA приложение, которое будет отображать дерево классификатора, пользователь выбирает в дереве класс и тип item-а, и  затем для всех ICO в этом классе у которых нет классифицированных Item-ов создавать item-ы выбранного типа и классифицировать этими ICO. Как-то так. Немного не то что хотелось, но по SOA хотя бы примеров больше есть.


Коллеги, если у кого-нибудь есть информация прошу тут отписать или в ЛС кинуть, существуют в РФ где-нибудь порядошные курсы по разработке под ТС, так как у нас то курс для разработчика интеграторы наши провели, но там курс по сути представлял собой озвучивание и выполнение на практике того что описано в rich client customization programmer's guide, а там в основном все по представлению/отображению информации в ТС, и совершенно ничего нет по поводу создания/добавления и редактирования.

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

лучше всего.


Думаю попробовать реализовать с помощью SOA приложение, которое будет отображать дерево классификатора, пользователь выбирает в дереве класс и тип item-а, и  затем для всех ICO в этом классе у которых нет классифицированных Item-ов создавать item-ы выбранного типа и классифицировать этими ICO. Как-то так. Немного не то что хотелось, но по SOA хотя бы примеров больше есть.


Коллеги, если у кого-нибудь есть информация прошу тут отписать или в ЛС кинуть, существуют в РФ где-нибудь порядошные курсы по разработке под ТС, так как у нас то курс для разработчика интеграторы наши провели, но там курс по сути представлял собой озвучивание и выполнение на практике того что описано в rich client customization programmer's guide, а там в основном все по представлению/отображению информации в ТС, и совершенно ничего нет по поводу создания/добавления и редактирования.

к сименсу

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

Коллеги, если у кого-нибудь есть информация прошу тут отписать или в ЛС кинуть, существуют в РФ где-нибудь порядошные курсы по разработке под ТС, так как у нас то курс для разработчика интеграторы наши провели, но там курс по сути представлял собой озвучивание и выполнение на практике того что описано в rich client customization programmer's guide, а там в основном все по представлению/отображению информации в ТС, и совершенно ничего нет по поводу создания/добавления и редактирования.

бред.

как у сименса так и у партнеров интеграторов есть курсы по программированию,в основном ITK и JAVA. Там не только про отображение. И даже в стандартных мануалах ест ьпримеры как писать редактировать в те же формы, свойства объектов. 

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

 

Найдите в интернете контакты известных компаний интеграторов решений сименс, выходите на связь,и если устраивает цена/предложения - пробуйте

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

У нас похожий процесс реализован в тонком клиенте с помощью TC script, т.е. ITK  по сути. Там все просто - после заполнения формы со свойствами ICO и нажатия "Сохранить", создается айтем и его ревизия классифицируется. строчек 15 наверное на все. в толстом клиенте будет посложней 

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

В конечном счете задача реализована посредством разбора декомпилированных плагинов идущих с Teamcenter. В итоге создан плагин для RAC TC который вызывается по кнопке в меню инструментов Классификатора, при нажатии которой выводится диалоговое окно, в которое необходимо ввести ID, наименование и выбрать из выпадающего списка тип создаваемого Item-а (обязателен только тип), далее в Teamcenter автоматически создается Item (реализацию создания Item нашел в одном из плагинов разработанных интегратором), затем созданный Item копируется в буфер обмена и после этого вставляется из буфера обмена в выбранный класс Классификатора (реализацию копирования Item в буфер обмена и вставки из буфера в Классификатор нашел в плагинах идущих с TC), с соответствующим созданием ICO.
 
Ну и пример кода моей реализации, а то что-то в ветке примеров маловато.
 
Класс-помощник работы с TCComponent

package ru.cccp3d.helpers;

import com.teamcenter.rac.aif.ApplicationDef;
import com.teamcenter.rac.aifrcp.AIFUtility;
import com.teamcenter.rac.kernel.TCComponent;
import com.teamcenter.rac.kernel.TCComponentBOMViewRevision;
import com.teamcenter.rac.kernel.TCComponentBOMViewRevisionType;
import com.teamcenter.rac.kernel.TCComponentDataset;
import com.teamcenter.rac.kernel.TCComponentDatasetType;
import com.teamcenter.rac.kernel.TCComponentFolder;
import com.teamcenter.rac.kernel.TCComponentItem;
import com.teamcenter.rac.kernel.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCComponentItemType;
import com.teamcenter.rac.kernel.TCComponentViewType;
import com.teamcenter.rac.kernel.TCComponentViewTypeType;
import com.teamcenter.rac.kernel.TCException;
import com.teamcenter.rac.kernel.TCSession;

public class TCComponentsHelper
 {
   private static final TCSession session = (TCSession)AIFUtility.getDefaultSession();
   
   public static TCComponentDataset createDataset(String type, String name) throws TCException {
     return createDataset(type, name, "");
   }
   
   public static TCComponentDataset createDataset(String type, String name, String tool) throws TCException {
     TCComponentDatasetType typeDS = (TCComponentDatasetType)session.getTypeComponent("Text");
     TCComponentDataset dataSet = typeDS.create(name, name, type, tool);
     return dataSet;
   }
   
   public static TCComponentItem createItem(String id, String rev, String type, String name) throws TCException {
     TCComponentItem search = searchItem(id);
     if (search == null) {
       TCComponentItemType typeItem = (TCComponentItemType)session.getTypeComponent("Item");
       search = typeItem.create(id, rev, type, name, "", new TCComponent());
       return search;
     }
     return null;     
   }
   
   public static TCComponentItem searchItem(String id) throws TCException
   {
     TCComponentItemType type = (TCComponentItemType)session.getTypeComponent("Item");
     TCComponentItem item = type.find(id);
     return item;
   }
   
   public static void addToNewStuff(TCComponentItem object) {
     try {
       TCComponentFolder newStuffFolder = session.getUser().getNewStuffFolder();
       addItemToFolder(object, newStuffFolder);
     } catch (TCException e) {
       e.printStackTrace();
     }
   }
   
   public static void addItemToFolder(TCComponentItem createItem, TCComponentFolder folder) {
     if (folder == null) {
       return;
     }
     try {
       folder.add("contents", createItem);
     }
     catch (Exception localException) {}
   }
   
   public static void openInTC(TCComponent comp) {
     ApplicationDef applicationDef = AIFUtility.getAIFApplicationDefMgr().getApplicationDef("com.teamcenter.rac.ui.perspectives.navigatorPerspective");
     applicationDef.openApplication(new com.teamcenter.rac.aif.kernel.InterfaceAIFComponent[] { comp });
   } 
 
   public static void copyToClipBoard(TCComponent comp) {} 
 
   public static void createDefaultBomView(TCComponentItem item)
   {
     try
     {
       TCComponentItemRevision rev = item.getLatestItemRevision();
       TCComponentBOMViewRevision createBVR = createBVR(rev, "View");
       createBVR.save();
       rev.lock();
       rev.save();
       rev.unlock();
     } catch (TCException e) {
       e.printStackTrace();
     }
   }
   
   public static TCComponentViewType findBOMViewType(String sBOMViewType, TCSession session) {
     TCComponentViewType vt = null;
     try {
       TCComponentViewTypeType tc_vtt = (TCComponentViewTypeType)session.getTypeComponent("PSViewType");
       TCComponent[] array_vt = tc_vtt.extent();
       for (int i = 0; i < array_vt.length; i++)
         if (array_vt[i].toString().equals(sBOMViewType)) {
           vt = (TCComponentViewType)array_vt[i];
           break;
         }
     } catch (TCException ex) {
       ex.printStackTrace();
     }
     return vt;
   }
   
   public static TCComponentBOMViewRevision createBVR(TCComponentItemRevision ir, String bv_type) throws TCException {
     TCSession session = ir.getSession();
     TCComponentBOMViewRevision bvr = null;
     TCComponentViewType vt = findBOMViewType(bv_type, session);
     TCComponentBOMViewRevisionType tc_bvr = (TCComponentBOMViewRevisionType)session.getTypeComponent("BOMView Revision");
     bvr = tc_bvr.create(ir.getItem().getProperty("item_id"), ir.getProperty("item_revision_id"), vt, false);
     return bvr;
   }
 }

Класс-помощник для "общения" с окном

 
package ru.cccp3d.helpers;
 
public class TCItemHelper {
 
private String m_id;
private String m_rev;
private String m_type;
private String m_name;
 
public TCItemHelper(String id, String rev, String type, String name) {
m_id = id;
m_rev = rev;
m_type = type;
m_name = name;
}
 
public void setId(String paramString) {
this.m_id = paramString;
}
 
public String getId() {
return this.m_id;
}
 
public void setRev(String paramString) {
this.m_rev = paramString;
}
 
public String getRev() {
return this.m_rev;
}
 
public void setType(String paramString) {
this.m_type = paramString;
}
 
public String getType() {
return this.m_type;
}
 
public void setName(String paramString) {
this.m_name = paramString;
}
 
public String getName() {
return this.m_name;
}
 
}

 
Класс диалогового окна, за основу взят TitleAreaDialog просто потому что нашел пример с ним в интернете, в принципе можно взять какой-нибудь другой класс из org.eclipse.jface.dialogs

 
packagepackage ru.cccp3d.components;
 
import java.awt.BorderLayout;
import java.util.ArrayList;
import java.util.List;
import java.util.Map.Entry;
 
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JTextField;
 
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Shell;
 
import ru.cccp3d.helpers.TCItemHelper;
 
public class NewItemDialog extends TitleAreaDialog {
 
    private String selectedButton;
    private TCItemHelper resultItem;
    private String title, bodyMsg; 
    private int msgType; //IMessageProvider  
    private TCItemHelper m_item; 
    private Text textId;
    private Text textName;
    private Text textRev; 
    private Combo comboType;
 
    /** 
     * @param parentShell   - Parent Shell 
     * @param title         - Title of the dialogue. 
     * @param bodyMsg       - Body message of the dialogue. 
     * @param item  - Item default value. 
     * @param msgType       - 'IMessageProvider.INFORMATION '  Can be one of: NONE ERROR INFORMATION WARNING
     */
    public NewItemDialog(
            Shell parentShell, String title, String bodyMsg, 
            TCItemHelper item,
            int msgType)  { //for type see: IMessageProvider
   
        super(parentShell);
 
        this.m_item = item;
 
         
        //Set labels. 
        this.title = title;
        this.bodyMsg = bodyMsg;
        
        //set type
        this.msgType = msgType;
        
        // avoid help button poping up.
        this.setHelpAvailable(false);
        
        resultItem = null;
 
        selectedButton = null;
    }
 
    /** Dialogue constructor */
    @Override
    public void create() {
 
        super.create();
 
        //The 'Message' of a TitleArea dialogue only spans 1-2 lines. Then text is cut off. 
        //It is not very efficient for longer messages. 
        //Thus we utilize it as a 'title' and instaed we appeng a label to act as body. (see below). 
        setMessage(this.title, this.msgType); //$NON-NLS-1$
        //setTitle(); //not used.
        
        //Set the size of the dialogue. 
        //We avoid hard-coding size, instead we tell it to figure out the most optimal size.
        //this.getShell().setSize(650, 550); //Hard-Coded = bad.
        this.getShell().setSize(getInitialSize());
    }
 
    /** Return the buttonID of the button that the user selected if he pressed ok. 
     * 
     * @return ButtonID of selected button.
     */
    public String getSelectedButton() {
        return selectedButton;
    }
    
    public TCItemHelper getResultItem() {
     return resultItem;
    }
 
 
    @Override
    protected Control createDialogArea(Composite parent) {
        Composite area = (Composite) super.createDialogArea(parent);
        Composite container = new Composite(area, SWT.NONE);
        container.setLayoutData(new GridData(GridData.FILL_BOTH));
        GridLayout layout = new GridLayout(2, false);
        container.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
        container.setLayout(layout);
        
        Label label = new Label(container, 0);
        label.setText(this.bodyMsg);
        label = new Label(container, 0);
        label.setText("");
        label = new Label(container, 0);
        
        label.setText("Идентификатор:");
        textId = new Text(container, 0);
        textId.setSize(40,15);
        label = new Label(container, 0);
        label.setText("Наименование:");       
        textName = new Text(container, 0);
        label = new Label(container, 0);
        label.setText("Ревизия:");
        textRev = new Text(container, 0);
        label = new Label(container, 0);
        label.setText("Тип объекта:");
        
        // типы Item
        comboType = new Combo(container, 0);
        comboType.add("Complect");
        comboType.add("Detal");
        comboType.add("Document");
        comboType.add("Material");
        comboType.add("Prochee");
        if (m_item != null) {
         textId.setText(m_item.getId());
         textRev.setText(m_item.getRev());
         textName.setText(m_item.getName());
        }        
        return area;
    }
 
    // save content of the Text fields because they get disposed
    // as soon as the Dialog closes
    protected void saveInput() {
     resultItem = new TCItemHelper(textId.getText()  , textRev.getText(), comboType.getText(), textName.getText());
        
    }
 
    /** Called when the ok button is pressed */
    @Override
    protected void okPressed() {
        saveInput(); // save input.
        super.okPressed(); // close dialogue
    }
 
}

 
Ну и реализация обработчика нажатия кнопки  на тулбаре (как сделать кнопу есть в Client Customization Programmer's Guid). Импорт надо почистить, так как пробывал разные варианты, накопилось много лишнего.

 
import java.awt.Frame;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
import java.util.Map.Entry;
 
import javax.swing.SwingUtilities;
 
import ru.cccp3d.components.*;
import ru.cccp3d.helpers.*;
 
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.handlers.HandlerUtil;
import org.eclipse.jface.dialogs.IMessageProvider;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.window.Window;
import com.teamcenter.rac.aif.AIFClipboard;
import com.teamcenter.rac.aif.AIFPortal;
import com.teamcenter.rac.aif.AIFTransferable;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.ClipboardOwner;
import java.awt.datatransfer.Transferable;
 
import java.util.AbstractMap.SimpleEntry;
 
 
import com.teamcenter.rac.aif.AbstractAIFUIApplication;
import com.teamcenter.rac.aif.kernel.AIFComponentContext;
import com.teamcenter.rac.aif.kernel.AbstractAIFSession;
import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent;
import com.teamcenter.rac.aifrcp.AIFUtility;
import com.teamcenter.rac.kernel.*;
import com.teamcenter.rac.util.MessageBox;
import com.teamcenter.rac.util.Registry;
import com.teamcenter.rac.util.Utilities;
import com.teamcenter.rac.classification.*;
import com.teamcenter.rac.classification.common.*;
import com.teamcenter.rac.classification.common.operations.G4MOpenOperation;
 
 
public class SampleHandler extends AbstractHandler implements ClipboardOwner {
/**
* The constructor.
*/
public SampleHandler() {
}
 
/**
* the command has been executed, so extract extract the needed information
* from the application context.
*/
public Object execute(ExecutionEvent event) throws ExecutionException {
IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);
        //--- Set Dialogue options.
        String title = "Создание записи в классификаторе совместно с классифицированным объектом";
        String body = " Текст пояснения \n"
                + "Ещё текст пояснения.";
             
        int msgType = IMessageProvider.INFORMATION;  //Can be one of: NONE ERROR INFORMATION WARNING
        //--- Instantiate & open the dialogue.
        NewItemDialog myDialog =
                new NewItemDialog(window.getShell(), title, body, null, msgType);
        int retVal = myDialog.open();
 
        //Handle dialogue outcome.
        switch (retVal) {
        case Window.OK:  //Avoid using generic '1' and '0' as it's confusing. Use defined constants as shown.
         // Нажато Ok - создаем и классифициурем объект
         TCItemHelper itemInfo;
         itemInfo = myDialog.getResultItem();
         TCComponentItem item;
     try {
     item = TCComponentsHelper.createItem(itemInfo.getId(),itemInfo.getRev(),itemInfo.getType(),itemInfo.getName());
     
     /*
      * Скопируем созданный компонент в буфер
      */
 
     //Vector localVector = new Vector();
     //localVector.addElement(item);
     AIFClipboard localAIFClipboard = AIFPortal.getClipboard();
     AbstractAIFUIApplication currentApplication = AIFUtility.getCurrentApplication();
     Registry m_reg = currentApplication.getRegistry();
     AbstractG4MContext m_context = ((AbstractG4MApplication)currentApplication).getG4MContext();
     //AbstractAIFSession localAbstractAIFSession = currentApplication.getSession();
     //AIFTransferable localAIFTransferable = new AIFTransferable(localVector);
     AIFTransferable localAIFTransferable = new AIFTransferable(item);
     localAIFClipboard.setContents(localAIFTransferable, this); //??? можно вместо this поставить null !!!
     
     /*
      * Теперь надо выполнить вставку
      */
     currentApplication.getSession().setStatus("Paste Tc Component from Clipbord");
     
     try {
     Object localObject3;
         localObject3 = new G4MOpenOperation(m_context, m_reg.getString("g4mOpenOperation.MESSAGE"));
                    ((G4MOpenOperation)localObject3).setComponent((InterfaceAIFComponent)item);
                    ((G4MOpenOperation)localObject3).executeOperation();
 
} catch (Exception e) {
MessageBox.post(e);
}
currentApplication.getSession().setReadyStatus();
 
     } catch (TCException e) {
     MessageDialog.openInformation(
     window.getShell(),
     "Ошибка при создании объекта Item типа " + itemInfo.getType(),
     e.getError());
     }
         
         
            //System.out.println("You selected option: " +  myDialog.getResultItem().getName());
            break;
        case Window.CANCEL:
            //System.out.println("You clicked cancle");
            break;
        default:
            System.out.println("Unexpected closure of dialogue.");
            break;
        }
 
return null;
}
 
/*
* (non-Javadoc)
* @see java.awt.datatransfer.ClipboardOwner#lostOwnership(java.awt.datatransfer.Clipboard, java.awt.datatransfer.Transferable)
*/
public void lostOwnership(Clipboard paramClipboard, Transferable paramTransferable) {}
 
}

Ну и в конце, повторю то с чего начал, Java начал изучать с начала января, так что прошу сильно строго не судить.

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Нанософт разработка
      АО «Сибирский научно-исследовательский, конструкторский и проектный институт алюминиевой и электродной промышленности» («СибВАМИ») – генеральный проектировщик крупных российских металлургических заводов. Входит в состав объединенной компании «РУСАЛ» – ведущего игрока мировой алюминиевой отрасли. Институт работает с 1959 года, 10 апреля 2024-го он отметил свое 65-летие. АО «СибВАМИ» располагается в Иркутске и имеет пять обособленных подразделений в Красноярске, Братске, Новокузнецке, Саяногорске и Каменск-Уральском. Является многолетним пользователем САПР для разработки и оформления проектной документации в рамках создания новых производственных мощностей и технической модернизации действующих. Из этой статьи вы узнаете, почему еще в 2013 году руководство «СибВАМИ» решило заменить AutoCAD от американского поставщика Autodesk на российскую Платформу nanoCAD и после более чем десяти лет сотрудничества с «Нанософт» не планирует вести деятельность в сторонних САПР. Поставку лицензий и техническую поддержку на всех этапах внедрения осуществила компания «Макссофт-24», премьер- и фокус-партнер «Нанософт» по направлениям «Конструкции» и «Землеустройство».   Российской компании – российская САПР: доступно, надежно, перспективно Предпосылкой к поиску альтернативных САПР как зарубежного, так и российского производства стало для «СибВАМИ» изменение ценовой политики Autodesk в части перехода на годовые подписки и увеличение стоимости лицензий. Но уже на старте этой работы решено было рассматривать именно отечественные решения – в первую очередь с целью обеспечения безопасности. По результатам отбора институт отдал предпочтение Платформе nanoCAD от «Нанософт». Кроме очевидной выгоды по стоимости в сравнении с западным предшественником, специалистам «СибВАМИ» была важна совокупность критериев для сохранения высокой скорости повседневной работы: ·        поддержка *.dwg-формата; ·        знакомый интерфейс; ·        поддержка российских стандартов; ·        широкий набор программных инструментов.     Анастасия Пьянкина, начальник технического отдела АО «СибВАМИ» «Для предприятия на момент замены САПР основным критерием отбора была стоимость, вторым – утилита “СПДС”. В AutoCAD она сложна и в целом не была востребована в работе. Мы самостоятельно создавали подпрограммные настройки для оформления чертежей, встроенными не пользовались. В nanoCAD эта функция понятна и по интерфейсу, и по применению; настроена на российские ГОСТы, то есть сложностей с ее использованием не возникает. Знаете, как говорят: “Чем круче джип, тем дальше идти за трактором”, зачем усложнять работу, если можно ее упростить».   Импортозамещение за «пятилетку» без срыва сроков реализации проектов Полноценное внедрение новой САПР в работу всех подразделений большого предприятия – дело не быстрое. В «СибВАМИ» это хорошо понимали, когда ставили себе цель полностью отказаться от работы в AutoCAD и установить Платформу nanoCAD на каждое рабочее место. Только такой вариант исключал неизбежные путаницу и конфликты чертежей при одновременной работе сразу в нескольких САПР, а значит и негативное влияние на динамику производственных процессов. Так в 2013 году стартовало поэтапное внедрение, начавшееся с головного офиса «СибВАМИ» в Иркутске и обособленного подразделения в Красноярске: 1.      Обследование тестовой группой. 2.      Выбор необходимого ПО. 3.      Обучение пользователей. 4.      Разворачивание рабочих мест. 5.      Адаптация инженеров к новой САПР и разработка стандарта предприятия. 6.      Введение в эксплуатацию.   Этап 1. Обследование тестовой группой На первом этапе была создана тестовая группа, которая включала в себя по два-три человека от каждого направления из технологического, строительного и общеинженерного отделов головного офиса и обособленного подразделения. Задача стояла протестировать всю линейку продуктов nanoCAD и отобрать для работы необходимое ПО от «Нанософт», которое охватывало бы все проектные потребности института. В течение года группа оценивала оформление, настройки и другие функции выбранных программ, попутно составляя перечень вопросов для консультаций со специалистами разработчика.     Анастасия Пьянкина, начальник технического отдела АО «СибВАМИ»     «На этом этапе очень помогали специалисты компании “Макссофт-24”, оперативно отвечали на все наши вопросы, связанные с тестированием и освоением функционала продуктовой линейки на базе nanoCAD. Не возникло явного отторжения продуктов, что дало импульс уверенно двигаться дальше».   Этап 2. Выбор необходимого ПО «СибВАМИ» – проектный институт полного цикла: он проводит комплекс работ по промышленному производству, в том числе разрабатывает головные образцы нового технологического оборудования, а также средств механизации и автоматизации различного назначения. По итогам тестирования и детального изучения продуктов «Нанософт» определились актуальные для задач института рабочие инструменты. Для головного подразделения в Иркутске ими стали Платформа nanoCAD c дополнительными модулями «СПДС» и «Механика», программы nanoCAD Стройплощадка, nanoCAD GeoniCS и nanoCAD BIM Электро. В обособленном подразделении развернули рабочие места с аналогичным набором решений за исключением модуля «Механика». Всего за 2014 год в обоих подразделениях было установлено 119 рабочих мест с сетевыми версиями продуктов nanoCAD. Для проверки соответствия и актуальности нормативных документов, указываемых в пояснительных записках и проектной документации, использовалась программа NormaCS, дистрибьютором которой является «Нанософт». Программа работает в связке с nanoCAD, а ее ключевое удобство состоит в том, что анализ информации происходит в Word-документе и все изменения выделяются автоматически.   Этап 3. Обучение пользователей После отбора ПО стартовало обучение персонала. Специалисты «Макссофт-24» проводили групповые и индивидуальные уроки в онлайн-формате с итоговой аттестацией слушателей. Параллельно инженеры института самостоятельно осваивали функционал САПР, используя встроенные подсказки в интерфейсе, а также участвовали в открытых публичных вебинарах, организованных разработчиком и партнером. Обратную связь после комплексного обучения и практической работы с продуктами собирали через опросы инженеров «СибВАМИ». Для полноценного внедрения выбранных продуктов специалисты компании «Макссофт-24» ежегодно встречались с инженерами «СибВАМИ», детально прорабатывая каждый вопрос функционала ПО. Обратная связь от пользователей анализировалась с разделением запросов на две категории: ·        задача решается штатным функционалом – нужно дополнительное обучение сотрудников; ·        задача не решается или решается с ошибками – требуется доработка программного продукта. На основе задач из второй категории составлялся план работ, который поступал программистам «Нанософт». Таким образом постепенно наращивался необходимый функционал.   Этап 4. Разворачивание рабочих мест Вооружившись базовыми знаниями о новой САПР, инженеры приступили к проектированию в линейке nanoCAD, консультируясь с группой технической поддержки из специалистов «Макссофт-24». Оперативное содействие разработчика и партнера помогало устранять возникающие ошибки в короткие сроки и без ущерба для производственного процесса. Каждый отдельный вопрос поступал в проработку для модернизации программы в ее очередной версии. Благодаря такому подходу новые сборки Платформы еще полнее отвечали конкретным потребностям пользователей.   Этап 5. Адаптация инженеров к новой САПР и разработка стандарта предприятия Новое ПО инженеры «СибВАМИ» приняли не сразу. Во-первых, опытные проектировщики были убеждены, что AutoCAD – бессменный лидер, монополист мирового рынка САПР, и достойных аналогов ему нет. Во-вторых, радикальная, в масштабах всего предприятия замена привычных программных инструментов проектирования могла сильно затормозить работу, не говоря уже о риске финансовых потерь при планировании и реализации проекта. Уверенный настрой руководства, его убежденность в стратегической правильности принятого решения, а также обоснованное мнение тестовой группы пользователей помогли убедить коллег-проектировщиков, что грядущие перемены – оправданная мера, которая в будущем убережет институт от больших сложностей.     Анастасия Пьянкина, начальник технического отдела АО «СибВАМИ»     «Освоение продуктов nanoCAD проходило постепенно, с полным погружением в каждый возникавший вопрос. Благодаря привычному интерфейсу и подсказкам инженеры быстро обучались, а спорные моменты решали все вместе. Коллеги были рады поделиться своим опытом, при этом ощущая мощную поддержку коллектива».     Инженеры института отметили следующие функции, которые помогли автоматизировать ряд задач по текущим проектам: ·        возможность оформления спецификации и любой таблицы с последующим их переводом в Excel – решается нажатием одной кнопки; ·        трассировка форматов jpeg – преобразование старых копий чертежей в векторный формат; ·        умная выноска – простая работа со слоями проекта; ·        работа с фильтрами – удобный поиск нужных элементов.           Пример чертежа общих данных участка складирования, выполненного в Платформе nanoCAD План и разрез участка складирования, выполненные в Платформе nanoCAD   За пять лет активной проектной работы в продуктах nanoCAD институт создал корпоративный стандарт, хотя изначально такая задача не ставилась. В стандарт вошли требования к единообразному оформлению чертежей (шрифты, высота текста для определенных элементов, толщина линий и т.д.). Также в нем представлены бизнес-процессы: от обмена заданиями между подразделениями до этапности выпуска проектной документации. На выходе получился не просто серьезный документ – сформировалась единая культура проектирования. Новые сотрудники не испытывали сложностей в работе с Платформой nanoCAD по утвержденному регламенту, а уже опытные специалисты, используя общепринятые шаблоны, тратили на оформление проектной документации гораздо меньше времени. Именно благодаря стандарту установилось полное и беспрепятственное взаимодействие между отделами.   Этап 6. Введение в эксплуатацию В настоящее время налажена стабильная работа со всеми задействованными в институте продуктами nanoCAD. При выходе очередной сборки ПО компьютеры пользователей не «зависают», как это случалось в начале внедрения, – обновление происходит гладко благодаря установке новой версии «поверх» предыдущей. Вопросов не возникает даже относительно проектов, созданных в зарубежных САПР. Бывают случаи, когда чертежи от иностранных партнеров приходят в редактируемом формате, но некорректно отображаются в продуктах nanoCAD. Такой проект проходит первичную аналитику и редактуру у инженеров «Макссофт-24». Если требуется более серьезная работа с «конфликтами», подключаются специалисты «Нанософт». «СибВАМИ» практикует регулярное повышение квалификации своих инженеров в работе с Платформой nanoCAD: раз в полгода проводятся вебинары по возможностям новейших версий продуктов разработчика. Результатом системного процесса внедрения и использования решений «Нанософт» в «СибВАМИ» стали успешно реализованные проекты. Так, проект Центрального административно-бытового комплекса полностью выполнен в nanoCAD.       Чертеж фасада здания административно-бытового комплекса, выполненный в Платформе nanoCAD       Построенное здание административно-бытового комплекса   Удобство работы по общепринятым стандартам проектирования в российской Платформе nanoCAD Кардинальная замена ПО в «СибВАМИ», привыкшем годами работать в продуктах зарубежных разработчиков, не только не оказала негативного воздействия на процесс проектирования, но и дала организации преимущества как пользователю российской САПР. После перехода на продукты линейки nanoCAD институт мог вернуться к проектированию в САПР иностранных разработчиков, но делать этого не стал. По словам сотрудников «СибВАМИ», для этого есть минимум две причины: 1) удобство использования российского продукта, подтвержденное на практике проектировщиками различных специальностей; 2) отсутствие необходимости переплачивать за функции, которые не задействованы в процессе работы над проектом. Платформа nanoCAD – это база, на которую можно установить именно те инструменты, которые будут востребованы на предприятии.     Надежда Худобердина, директор ООО «Макссофт-24»   «”СибВАМИ” – одно из первых крупных предприятий, масштабно внедривших Платформу nanoCAD на уровне всех подразделений в шести городах. Сегодня можно уверенно говорить об успехе этого проекта. В 2022 году количество лицензий Платформы nanoCAD уже составляло порядка 300 единиц, а общее число лицензий дополнительных модулей “СПДС” и “Механика” превысило две сотни. Отмеченное инженерами института удобство проектирования – следствие работы nanoCAD по российским стандартам. Не возникает спорных ситуаций при нормоконтроле проектной и рабочей документации, а затем и в процессе строительства».     Анастасия Пьянкина, начальник технического отдела АО «СибВАМИ» «В России запущен и активно идет процесс импортозамещения. Многолетнее сотрудничество наших компаний только подтверждает, что у российских разработчиков ПО достаточно потенциала, чтобы составить равную конкуренцию зарубежным производителям. Считаем “Нанософт” ответственным и надежным партнером, поскольку мы обеспечены всем необходимым функционалом и технической поддержкой для стабильной работы ПО».     О компании «Макссофт-24» «Макссофт-24» с 1991 года оказывает профессиональные услуги в области IT-сопровождения на всей территории Российской Федерации. Компания обеспечивает своих клиентов надежными инновационными решениями и сервисами, благодаря сотрудничеству с ведущими отечественными разработчиками высоких технологий. Среди основных направлений деятельности – внедрение САПР/ТИМ-решений от разработчика «Нанософт». Официальный сайт: www.maxsoft.ru   О компании «Нанософт» «Нанософт» – российский разработчик инженерного ПО: технологий автоматизированного проектирования (CAD/САПР), информационного моделирования (BIM/ТИМ) и сопровождения объектов промышленного и гражданского строительства (ПГС) на всех этапах жизненного цикла, а также сквозной цифровизации всех процессов в производстве. Флагманский продукт – Платформа nanoCAD – универсальная САПР для создания чертежей и 3D-моделей с прямой поддержкой *.dwg-формата. Миссия компании – формирование условий для массового оснащения российского рынка лицензионными, качественными и доступными отечественными программными продуктами. «Нанософт» помогает своим заказчикам достичь импортонезависимости в области инженерного ПО, что позволяет гарантированно защитить критически важную ИТ-инфраструктуру. Все программные продукты компании включены в Единый реестр российских программ для электронных вычислительных машин и баз данных. Официальный сайт: www.nanocad.ru  
    • Killerchik
      Совершенно верно. А возможность поворота на фото выше есть (прошу прощения, может спутаю оси) только в плоскостях ZX и XY. И сколько бы станок не крутил и не двигал всеми своими осями, ось шпинделя останется неперпендикулярна поверхности стола в плоскости ZY, что приведёт к описанным мною выше проблемам. Это не исправить никакой программной компенсацией.   Если в проблемной плоскости нет возможности физического поворота - то никак. Переместить условную точку можно в любую точку, а вот обеспечить правильное положение в пространстве физических осей так легко не получится.   Это не валидный пример для данной ситуации. Давайте его чуть изменим - револьверная голова повёрнута относительно оси главного шпинделя. Соответственно, оси приводных инструментов смотрят куда-то не туда и не параллельны оси главного шпинделя. И никакой программной компенсацией это не исправить.
    • Guhl
      Так вы пишете в одном месте отключить, а в другом включить Вот и непонятно Так включить или отключить? Вы же не писали что для проверки, а просто сказали отключить в теме с хх Задаю вам прямой вопрос, а вы мне ответить не можете  
    • nein
      Здравствуйте. Станок MIKRON UM 900 S TNC426. Если в программе много коротких перемещений, станок вибрирует и качество поверхности - плохое. Менял стратегию обработки - при более-менее длинных отрезках ситуация улучшается. Думаю, что почему-то станок делает остановки между кадрами.  Подскажите, пожалуйста, где в параметрах это можно проверить и исправить. Спасибо.
    • advocut
      @hlibhlib спасибо, стало понятнее. Наконец-то источник по операции Stock Model.
    • gudstartup
      доктор вам надо лучше анализировать. если вы отключите линейку то у вас останется только датчик мотора и никакие люфты не будут оказывать влияние на на значение позиции считанное с датчика мотора поэтому для проверки и люфтов и то что это не привод резонирует просто отключают линейку и оставляют semiclosed loop. tckb dfv yflj сохранить fullclosed loop и исключить резонанс тогда вы включаете функцию dual position feedback и задаете значение тау . в общем тренируйтесь в понимании того что очевидно но не признается вами под разными предлогами что затягивает дискуссию и отнимает время.   в какой плоскости повернут стол те оси и нужно компенсировать у Виктора это плоскость zy как по вашему компенсации устраняют неперпендикулярность осей именно их взаимным перемещением. яркий пример это токарный станок с осью y где она конструктивно не перпендикулярна но при обработке она перемещается так что перпендикулярность соблюдается.
    • Nikollay
      К примеру печатная плата с кучей покупных элементов информации о весе которых нет. Подгонять плотность под каждую плату плохое решение.
    • sloter
      Например, наложить взаимосвязь Концентричность между центром строящегося отверстия и кромкой имеющегося в другой детали.
    • lem_on
      Правильно, терпи. Гляди дома не так вонять будет. 
    • Guhl
      Бывает, что залипает один концевой и получается, что в одном из положений оба концевика сработавшие Вы проверили, что именно один сработал, а второй отжат? Вообще конечно, ладдер ответ даст, чего не хватает  Вот пример как искать катушку аварии в ладдере    
×
×
  • Создать...