Quantcast
Channel: MicroStation Programming Forum - Recent Threads
Viewing all 7260 articles
Browse latest View live

Linked Text To Design File

$
0
0

Hi all,

We are copying a range from excel, pasting it to the clipboard and then pasting it to the drawing using the atest version of microstation v8i selectseries 4 on windows 10.

However the paste is no longer working. Specifically the line: CadInputQueue.SendKeyin "clipboard pastespecial Linked Text To Design File" is not working.

Here is the code:

'get data from excel

templateFile.CopyRange indexSheet, xSettingsBag("CSources")(j) & (1 + i * xSettingsBag("RCount")) & ":" & xSettingsBag("CSources")(j) & ((i + 1) * xSettingsBag("RCount"))

Do
MyData.GetFromClipboard 'copy from
DoEvents
Loop Until Not MyData.GetFormat(0)

CadInputQueue.SendKeyin "clipboard pastespecial Linked Text To Design File"

Dim point As Point3d
Dim lngTemp As Long

' Coordinates are in master units
point.X = xSettingsBag("XOffset") + ((i Mod xSettingsBag("BCount")) * xSettingsBag("BOffset")) + xSettingsBag("COffsets")(j)
point.Y = xSettingsBag("SheetOffset") - xSettingsBag("YOffset")
point.Z = 0#

'MbeSendDataPoint point, 1
CadInputQueue.SendDataPoint point, 1

Now what I can say is that the code works sometimes and sometimes it doesn't. So we wrap the code in a loop until it does work. But I have to think that isn't normal.

Any advice please on best practice to copy a range of cells from Excel and paste it into the Microstation?

Thank you


[CONNECT C#] Empty model

$
0
0

Hi,

I'm trying to figure out how to empty a model in the best way.

I tried the method model.Empty() and it seems to do the job. I thought. If I have the model attached to my active file and do a refresh after calling Empty() nothing is displayed. Great! But if a change into that model the elements are still there and when I go back to the original model the elements are all there again.

I obviously misunderstod this or need to do something else after the call to Empty(). Anyone out there that has an idea?

An other way could be to delete and recreate the model but I run into some timing problems when I tried that (detach, delete model, create model, attach again).

/Krister

[CONNECT C#] Have PickLists been removed in Update 9?

$
0
0

It seems that classes PickListLibrary and PickList are no longer public?!

Bentley has changed this functionality betweeen Update 7, 8 and now removed it altogether it seems. Can anyone explain if it has been replaced with something else or just removed?

/Krister

Hello World with vb.net vs2010

$
0
0

As I am new to all this, I am hoping that some one can point me in the right direction.  I am looking to create a programme (dll) in VB (visual studio 2010) which simply says hello World, and then from microstation call that routine, which I hope will then display a msg box saying "hello World" within microstation.

i have done a lot of reading and there seems to Be lots of different ways of doing this, with all the explanations beyond my abilities.  I dont need an explanation on how to create a form in vb with the words "hello World". However I would very much appreciate a step by step guide with examples on how to compile it within visual studio and then get it to run in microstation.

Thanks in advance.

v8i C# 怎么给创建的元素添加属性信息?

$
0
0

大家好!

            现在我想用C#给一个图形元素附加属性信息,用什么方法可以实现呢?

code not working after moving from windows 7 to windows 10

$
0
0

We are copying a range from excel, pasting it to the clipboard and then pasting it to the drawing.

However the paste is no longer working. Specifically the line: CadInputQueue.SendKeyin "clipboard pastespecial Linked Text To Design File" is not working.

'get data from excel

templateFile.CopyRange indexSheet, xSettingsBag("CSources")(j) & (1 + i * xSettingsBag("RCount")) & ":" & xSettingsBag("CSources")(j) & ((i + 1) * xSettingsBag("RCount"))

Do
MyData.GetFromClipboard 'copy from
DoEvents
Loop Until Not MyData.GetFormat(0)

CadInputQueue.SendKeyin "clipboard pastespecial Linked Text To Design File"

Dim point As Point3d
Dim lngTemp As Long

' Coordinates are in master units
point.X = xSettingsBag("XOffset") + ((i Mod xSettingsBag("BCount")) * xSettingsBag("BOffset")) + xSettingsBag("COffsets")(j)
point.Y = xSettingsBag("SheetOffset") - xSettingsBag("YOffset")
point.Z = 0#

'MbeSendDataPoint point, 1
CadInputQueue.SendDataPoint point, 1

Any advice please?

Latest version of microstation v8i selectseries 4 on windows 10.

How to add attribute information to an element,using C#

$
0
0

hello,everyone!

            I created an element in C#. Now I need to attach attribute information to this element. How can I implement this? Please help me!

VBA load mvba on Startup

$
0
0

Hey guys,

I got a problem with loading macro on startup.

First of all, I used Mark Shamoun’s macro (Openroads multi-user template library vba macro). BTW awesome macro!

First step:

MS_VBAAUTOLOADPROJECTS – check!

VBA projects – loaded load on startup

Then I added Class Module clsFileOpenClose

Dim WithEvents objApp As Application
 Private isFirstFile As Boolean

Private Sub Class_Initialize()
 Set objApp = Application
 isFirstFile = True
 End Sub

Private Sub objApp_OnDesignFileClosed(ByVal FileName As String)
 MsgBox "Closing file " & FileName, vbInformation
 End Sub

Private Sub objApp_OnDesignFileOpened(ByVal FileName As String)
 '' Do something different if this is the first file'
 If isFirstFile Then
 MsgBox "Your first file is open: " & FileName & vbCrLf & "Have a great CAD experience!", vbInformation

 isFirstFile = False
 Else
 MsgBox "Opening file " & FileName, vbInformation
 End If
sprawdz_ITL'' Call your automatic processing sub/function code from here'
 End Sub

OnProjectLoad

Sub OnProjectLoad()'' Autorun macro code goes here'
 MsgBox "Your macro is loaded – Welcome to MicroStation!"
 MonitorFileOpenClose
 End Sub

Sub MonitorFileOpenClose()
 Set myOpen = New clsFileOpenClose
 End Sub

Private Sub Class_Initialize()
 Set objApp = Application
 isFirstFile = True
 End Sub

Do you have any advise?

Thanks in advance

psz


[CONNECT C++] IViewDecoration

$
0
0

Interface IViewDecoration has a single implementable method virtual bool _DrawDecoration (IndexedViewportR viewport)=0.

The return value is a bool, but the MicroStationAPI documentation omits to tell us the meaning of the return value.

【C# mstn V8i Addin 】Get the user's exact drawing coordinate system. And then change the three-dimensional perspective of my painting CellElement.

$
0
0

I want to get the user's exact drawing coordinate system (accurate drawing coordinate system through the shortcut keys such as T, F, V, S, etc. is not the ACS auxiliary coordinate system), change the exact drawing coordinate system, and then change the three-dimensional perspective of my painting CellElement.
In addition, the CellElement I draw needs to rotate around the Z-axis of the exact drawing coordinate system. Now because I can't get a temporary coordinate system, the CellElement I draw is always on the XY plane of the world coordinate system and it always wraps around the world. The coordinate system rotates in the Z axis. I used the elemCell.RotateAboutZ(m_atPoints[0], m_atPoints[1].Y - m_atPoints[0].Y < 0 ? 2 * Math.PI - aa : aa) methods.

I found some methods on the Internet to get the exact drawing coordinate system by calling the MDL function. I have made a DllImport declaration for each function and then called it through PInvokde.

However, it did not have any effect. Please help, thank you!

Here is my code

public void Dynamics(ref Point3d Point, BCOM.View View, MsdDrawingMode DrawMode)
        {
            if (1 != m_nPoints)
                return;

             mdlCurrTrans_begin();
             mdlCurrTrans_identity();
             mdlCurrTrans_getTransforms(ref pMdlToUor, ref pUorToMdl);
             mdlCurrTrans_rotateByRMatrix(ref pUorToMdl, 1);
             mdlTMatrix_transformPoint(ref m_atPoints[0],ref pUorToMdl);

            
            Point3d[] txtPts = new Point3d[2];
            Element[] elems = new Element[8];
            Element[] elems3d = new Element[2];
            double aa = 0;
            m_atPoints[1] = Point;
            rMatrix = app.Matrix3dIdentity();
            ConeR = myForm.textBox1.Text.ToString() == "" ? 50 : Convert.ToInt16(myForm.textBox1.Text.ToString());
            CircleR = 110;
            elems[0] = app.CreateArcElement2(null, m_atPoints[0], CircleR, CircleR, rMatrix, 0, 2 * Math.PI);
            FenMu = Math.Sqrt((m_atPoints[1].X - m_atPoints[0].X) * (m_atPoints[1].X - m_atPoints[0].X) + (m_atPoints[1].Y - m_atPoints[0].Y) * (m_atPoints[1].Y - m_atPoints[0].Y) + (m_atPoints[1].Z - m_atPoints[0].Z) * (m_atPoints[1].Z - m_atPoints[0].Z));

            //长横线
            Point3d startPnt1 = app.Point3dFromXYZ(m_atPoints[0].X + CircleR, m_atPoints[0].Y, m_atPoints[0].Z);
            Point3d endPnt1 = app.Point3dFromXYZ(m_atPoints[0].X + CircleR + 140, m_atPoints[0].Y, m_atPoints[0].Z);
            elems[1] = app.CreateLineElement2(null, ref startPnt1, ref endPnt1);
           
            //LineElement oLine1 = app.CreateLineElement2(null, ref startPnt1, ref endPnt1);
            //app.ActiveModelReference.AddElement(oLine1);
            //竖线
            Point3d startPnt2 = app.Point3dFromXYZ(startPnt1.X + 140 / 2, m_atPoints[0].Y, m_atPoints[0].Z);
            Point3d endPnt2 = app.Point3dFromXYZ(startPnt1.X + 140 / 2, m_atPoints[0].Y + 82.5, m_atPoints[0].Z);
            elems[2] = app.CreateLineElement2(null, ref startPnt2, ref endPnt2);
            //短横线
            Point3d startPnt3 = app.Point3dFromXYZ(startPnt1.X + (140 - 80) / 2, startPnt1.Y + 82.5, startPnt1.Z);
            Point3d endPnt3 = app.Point3dFromXYZ(startPnt1.X + (140 - 80) / 2 + 80, startPnt1.Y + 82.5, startPnt1.Z);
           elems[3] = app.CreateLineElement2(null, ref startPnt3, ref endPnt3);
            Point3d endPnt4 = endPnt1;
            endPnt4.Y -= 55;
            elems[4] = app.CreateArcElement2(null, endPnt4, CircleR / 2, CircleR / 2, rMatrix, 0, 0.5 * Math.PI);
            //字母
            Point3d basePt2 = app.Point3dFromXYZ(m_atPoints[0].X, m_atPoints[0].Y, m_atPoints[0].Z);
            TextElement oText = app.CreateTextElement1(null, "C", ref basePt2, ref rMatrix);
            oText.TextStyle.Width = 110;
            oText.TextStyle.Height = 110;
            oText.TextStyle.Justification = MsdTextJustification.CenterCenter;
            //oText.TextStyle.Font = app.ActiveDesignFile.Fonts.Find(MsdFontType.WindowsTrueType, "宋体");
            oText.TextStyle.Font = app.ActiveSettings.TextStyle.Font;
            oText.LineWeight = 4;
            elems[5] = oText;
            //小圆柱
            Point3d topPt = m_atPoints[0];
                topPt.Y += 95;
            elems[6] = app.CreateConeElement1(null, ConeR, ref m_atPoints[0], ConeR, ref topPt, ref rMatrix);
          
            //大圆柱
            Point3d topPt1 = m_atPoints[0];
                topPt1.Y += 105;
            elems[7] = app.CreateConeElement1(null, ConeR + 20, ref topPt, ConeR + 20, ref topPt1, ref rMatrix);

            CellElement elemCell = app.CreateCellElement1("NoteCoordCell", ref elems, ref m_atPoints[0]);
            aa = Math.Acos((m_atPoints[1].X - m_atPoints[0].X) / FenMu);
            if (!myForm.cbAbslevel.Checked)
            {
                mdlCurrTrans_end();
                elemCell.RotateAboutZ(m_atPoints[0], m_atPoints[1].Y - m_atPoints[0].Y < 0 ? 2 * Math.PI - aa : aa);

            }
            else {
                mdlCurrTrans_end();
                elemCell.RotateAboutZ(m_atPoints[0], 0);
            }
            elemCell.Redraw(DrawMode);
            if (MsdDrawingMode.Normal == DrawMode)
            {
                app.ActiveModelReference.AddElement(elemCell);
            }
        }

[CONNECT C++] View Decorator vs. Element Decorator

$
0
0

Class IViewManager provides methods Add/DropViewDecoration and ElementDecorator.

Both types of decorator must inherit from IViewDecoration, which has a single method to be overridden: _DrawDecoration (IndexedViewportR);

What is the difference between a view decoration and an element decorator?  If we want to create an element decorator, what should we do in method _DrawDecoration (since it gives us a Viewport but not an element)?

[CONNECT U8] SystemCallback::SetElmDscrToFileFunction() and ItemTypes

$
0
0

I am using SystemCallback::SetElmDscrToFileFunction() to catch when a user creates new elements. My "command" establishes the callback function and then open a DialogBox where one of any number of ItemTypes can be selected. As new elements are created, the desire is to add the selected ItemType to the "new" element automatically. The callback function provides the "proposed" MSElementDescrP and a "replacement" MSElementDescrPP for when you return ELMDTF_STATUS_REPLACE. I am unable to add the ItemType successfully to the replacement MSElementDescrPP. I'm thinking it's because the EditElementHandle created from the "proposed" MSElementDescrP (newEdP), although "IsValid()", is not persistent. I get a MicroStation crash. Is there another way to attach the ItemType ?

static		ItemTypeLibraryPtr		itemTypeLib;

ElmDscrToFile_Status		AddFeatureItemOld(ElmDscrToFile_Actions action, 
											DgnModelRefP modelRef, 
											UInt32 filePos, 
											MSElementDescrP newEdP,			// new elem being written to file (NULL when ELMDTF_ACTION_DELETE)
											MSElementDescrCP oldEdP,		// elem in original state (NULL when ELMDTF_ACTION_APPEND)
											MSElementDescrH replacementEdPP)// used if we return ELMDTF_STATUS_REPLACE
{
    // ...
    
    EditElementHandle				eeh(newEdP, false, false);	// eeh does NOT own the elementDescr
    WString				            itemTypeName(L"Air Tunnel");
    LookForItemTypes(itemTypeName);		// searches for ItemTypeLibrary with "Air Tunnel",sets "itemTypeLib"
    if (itemTypeLib.IsValid())
    {
    	wprintf(L"itemTypeLib.IsValid()\n");
    	ItemTypeP			pItemType = itemTypeLib->GetItemTypeByName(itemTypeName.c_str() );
    	if (pItemType != nullptr)
    	{
    		wprintf(L"pItemType != nullptr\n");
    		wprintf(L"eeh.IsValid %d\n", eeh.IsValid());
    		wprintf(L"eeh.IsPersistent %d\n", eeh.IsPersistent());
    		CustomItemHost				itemHost = CustomItemHost(eeh);
    		wprintf(L"itemHost %08x\n", itemHost);
    		DgnECInstancePtr			pInstance = itemHost.ApplyCustomItem(*pItemType, true); //CRASHES Here
    		wprintf(L"pInstance.IsValid %d\n", pInstance.IsValid());    // Never gets to here...
    	}
    	else
    	{
    		wprintf(L"pItemType == nullptr\n");
    	}
    }
    else
    {
    	wprintf(L"NOT itemTypeLib.IsValid()\n");
    }
    mdlElmdscr_duplicate(replacementEdPP, eeh.GetElementDescrP());
    return ELMDTF_STATUS_REPLACE;	// use the update element descriptor
}    

Bruce

【MSTN V8i Addin C# 】object.RotateAboutZ Pivot, Angle

$
0
0

When I use the object.RotateAboutZ Pivot, Angle method, my CellElement always rotates around the Z axis in the global coordinate system. How can I rotate my CellElement around the Z axis of the Toggle AccuDraw coordinate system instead of the Z axis of the global coordinate system? The premise is that I used app.Matrix3dInverse(app.CommandState.AccuDrawHints.GetRotation(View)) in front of this method; we have obtained a matrix of Toggle AccuDraw coordinate system.

mdlPattern_area return -131 MDLERR_CELLNOTFOUND ???

$
0
0

Hi friends,


I am trying to create a Pattern Area with an MDL function and it is not possible for me, it always returns the error -131 (MDLERR_CELLNOTFOUND) and I do not understand why

I'm working with MicroStation v8i (SELECT series 3) v08.11.09.578, with VBA

1. FIRST, I HAVE THE CELL "MYPATTERN" CREATED IN MY LIBRARY OF CELLS

2. THIS IS MY CODE

    DECLARATION OF THE MDL FUNCTION

Declare Function mdlPattern_area Lib "stdmdlbltin.dll" _
    (ByRef patternEdPP As Long, ByVal solid As Long, ByVal holes As Long, _
    ByVal cell As Long, ByVal cellName As String, ByVal roscale As Double, _
    ByVal angle As Double, ByVal rowSpacing As Double, ByVal colSpacing As Double, _
    ByVal view As Integer, ByVal SearchForHoles As Boolean, ByRef originPoint As Point3d) As Long

    IMPLEMENTATION

Const SUCCESS                      As Long = 0
Const MDLERR_CELLNOTFOUND          As Long = -131
Const MDLERR_NONCLOSEDPATELM       As Long = -745
Const MDLERR_NONSOLIDPATELM        As Long = -746
Const MDLERR_INVALIDPATSPACE       As Long = -744'*****************************************************'GENERATE A SHAPE ELEMENT'*****************************************************
Dim points(0 To 4) As Point3d
points(0).X = 440453.86
points(0).Y = 4639314.61
points(0).Z = 297.66
points(1).X = points(0).X + 20
points(1).Y = points(0).Y
points(1).Z = 297.66
points(2).X = points(0).X + 20
points(2).Y = points(0).Y + 20
points(2).Z = 297.66
points(3).X = points(0).X
points(3).Y = points(0).Y + 20
points(3).Z = 297.66
points(4).X = points(0).X
points(4).Y = points(0).Y
points(4).Z = 297.66

Dim myShape1 As ShapeElement
Set myShape1 = CreateShapeElement1(Nothing, points)
'*****************************************************

Dim pHatch As Long
Dim status As Long

status = mdlPattern_area(pHatch, myShape1.MdlElementDescrP, 0, 0, "MYPATTERN", 1, 0, 0, 0, 0, False, points(0))

If SUCCESS <> status Then
    Dim msg As String
    Select Case status
    Case MDLERR_CELLNOTFOUND
        msg = "Pattern cell not found"
    Case MDLERR_NONCLOSEDPATELM
        msg = "Element is not closed"
    Case MDLERR_NONSOLIDPATELM
        msg = "Shape element has hole bit set"
    Case MDLERR_INVALIDPATSPACE
        msg = "Invalid pattern spacing and/or cell size"
    End Select
    MsgBox msg, vbCritical Or vbOKOnly, "Pattern Grouped Hole"
End If

3. AND RESULT IS ALWAYS    -131

Please, any idea ?

Thanks in advance

Kala

[CONNECT C++] statedata cursor location

$
0
0

Using global struct statedata (defined in header ..\Mstn\MicroStation.r.h) my app. can obtain the current cursor position in a MicroStation view...

DPoint3d  CurrentCursorPosition ()
{
  return statedata.current.dpUors;
}

I notice that as I move the cursor over a non-view window, such as MicroStation's tool settings, the current coordinates are zero.  How can I tell whether the cursor is in a MicroStation view window or in a non-view window?


XAttribute

$
0
0

Hello!!!

How can I extract XAttribute information from element without knowing the details of the structure data that has been attached. I have dgn from client and the XAttribute structure fomat is unkown. I am using Microstation V8i and coding using C++ API.

I have tried the following code:

xttribflag = elementRef_getXAttributeArchive(eleR);
 if(xttribflag==1)
 {
  XAttributeIter pIter(eleR);
  if(pIter.IsValid())
  {
   printf("\n iter id =%d",pIter.GetHandlerId());
   
   ob = (testobj*)pIter.PeekData();
   //printf("\n xdata = %s", (ob->str));
  }
  else
   printf("\n not valid xattribute");
 }

C# P/Invoke in MDL functions

$
0
0

Hi friends,

I'm working with MicroStation v8i (SELECT series 3) v08.11.09.578, with VBA

I need to use the MDL function mdlPattern_area in C#. This function has a cellName parameter of type Long.
In VBA this value is obtained with the function strPtr("myCell"),
for C # I have been recommended to useP/Invoke but I do not know how to do it

DECLARATION

[DllImport("stdmdlbltin.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int mdlPattern_area(ref long patternEdPP, 
                                         long solid, 
                                         long holes, 
                                         long cell, 
                                         long cellName, 
                                         double scale, 
                                         double angle, 
                                         double rowSpacing, 
                                         double columnSpacing, 
                                         int view, 
                                         long searchForHoles, 
                                         ref BCOM.Point3d originPoint);

IMPLEMENTATION

BCOM.Point3d[] points = new BCOM.Point3d[5];
points[0].X = 440453.86;
points[0].Y = 4639314.61;
points[0].Z = 297.66;

points[1].X = points[0].X + 20;
points[1].Y = points[0].Y;
points[1].Z = 297.66;

points[2].X = points[0].X + 20;
points[2].Y = points[0].Y + 20;
points[2].Z = 297.66;

points[3].X = points[0].X;
points[3].Y = points[0].Y + 20;
points[3].Z = 297.66;

points[4].X = points[0].X;
points[4].Y = points[0].Y;
points[4].Z = 297.66;

BCOM.ShapeElement myShape1;
myShape1 = app.CreateShapeElement1(null, points);

string cellName = "MYPATTERN";
long pHatch = 0;

long status = mdl.mdlPattern_area(ref pHatch, myShape1.MdlElementDescrP(false), 0, 0, ¿¿cellName??, 1, 0, 0, 0, 0, 0, ref points[0]);
if (SUCCESS != status)
{
}

Please, can someone help me?

Kala

Intersection between two solids VBA

$
0
0

Hi All,

I am using Aecosim Building designer V8i Ss6, trying to create a vba macro to intersect a slab form with a smart solid. 

I have a couple of questions: 

1 - Are Slab forms considered Solid Elements in mvba ? If it is the case Is there a way to get the Slab by user input then exclude that slab from the smartsolid enumerator when performing the task needed ?

2- When i record the Solid modeling tool used in Aecosim for the intersection i get  ( CadInputQueue.SendCommand "CONSTRUCT INTERSECTION" ), searched the entire index along with forum discussion i only found  GetIntersectionShapesFromRegion and GetRegionIntersection.


Is there a function that intersects solids( a Slab and a smart solid) then sets the slab attributes and properties to the result of the intersection ? ( The exact thing that the command construct intersection does) 

3- If this is not possible in mvba  can anyone provide a c# approach ?

Best Regards,

kal 


 

Connect VBA Open File Dialog

$
0
0

Hi all.

I am currently in the process of migrating my organization from V8i to Connect.  This includes the VBA that have been written over the years, most have been a non issue but there are some that used the Ken Getz code to call the cmdlg32.dll api to open and process a file, that draws out a bridge plot based on an in house geometry. I have gone through an added the needed PtrSafe to the declare function:

Declare PtrSafe Function aht_apiGetOpenFileName Lib "comdlg32.dll" _
    Alias "GetOpenFileNameA" (OFN As tagOPENFILENAME) As Boolean

I have gone through and changed the declaration of tagOPENFILE name to: 

Type tagOPENFILENAME
  lStructSize As Long
  hwndOwner As LongPtr
  hInstance As LongPtr
  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 LongPtr
  lpTemplateName As String
End Type

I have gotten the program to run and not crash. But it fails to open the called dialog box. I have tried every different option I came across in my searches and nothing has worked. If anyone has another method to call an open file dialog in VBA or any suggestion on getting this to work it would be appreciated.  My other option is to convert this program to .Net

Weight Mass Properties of a 3D model!!

$
0
0

I know where the Mass Properties function is and in Measure Volume you can tick a box. OK...

My question is, If Microstation can't apply a material index like Autocad can, how can Microstation possibly know what the weight of the item is?

Furthermore, If I check Mass Properties and COG and select an item it says it is only 4.4 kg???? What!! I know it is in the region of 200+ kg!! What gives??

I never require volume, but weight I require daily. So out of Microstation goes the 3D Model and into Solidworks or Autocad to get the Mass Weight of things.

This is annoying and time consuming. Anyone know how to solve this???

Viewing all 7260 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>