displaying point cloud data
CADForums.net Forum Index CADForums.net
Discussion of AutoCAD and other CAD software.
 
 FAQFAQ   MemberlistMemberlist     RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 
 
Google
 
Web cadforums.net
displaying point cloud data

 
Post new topic   Reply to topic    CADForums.net Forum Index -> SolidWorks
Author Message
paul
Guest





Posted: Sat Nov 12, 2005 1:10 am    Post subject: displaying point cloud data Reply with quote

Is any macro/utility/add-in available to read-in a large number of points
(200K) into SW.

I would appreciate any help.

thanks


Paul

Back to top
neil
Guest





Posted: Sat Nov 12, 2005 7:13 am    Post subject: Re: displaying point cloud data Reply with quote

see Shapeworks at http://www.baren-boym.com/
if you scroll to the bottom of the page you will see they also have a
conversion service for large point cloud files
HTH
Back to top
cadguru
Guest





Posted: Mon Nov 14, 2005 1:10 pm    Post subject: Re: displaying point cloud data Reply with quote

I wrote a point cloud utility a few years back that was hosted on the
solidworks vb and macro library website. If you can't find it, e-mail me
and I can find it and e-mail it to you.

adam@productcreationstudio.com


"neil" <neilscad@hotmail.com> wrote in message
news:albdf.569$vH5.38079@news.xtra.co.nz...
Quote:
see Shapeworks at http://www.baren-boym.com/
if you scroll to the bottom of the page you will see they also have a
conversion service for large point cloud files
HTH


Back to top
Tin Man
Guest





Posted: Tue Nov 15, 2005 1:10 pm    Post subject: Re: displaying point cloud data Reply with quote

Did you try a search here first? About 10 threads down from this one
there is a "POINT INPUT FROM EXCEL" thread that should get you started.

Ken
Back to top
cadguru
Guest





Posted: Tue Nov 15, 2005 9:10 pm    Post subject: Re: displaying point cloud data Reply with quote

I wrote a Point cloud input Macro a long time ago that still works in 2006.
It essentially reads in an xyz txt table and plots the points on the screen.
The Cool thing about this one is that you can read in a huge number of
points fairly quickly because of one simple line of code that allows the
points to be added directly to the database instead of showing them on the
screen one by one. I would recommend filtering out enough points to not
exceed 150,000 points or so. This takes about 2 minutes to bring in on my
machine. (Duall 64bit 3.6Ghz, 4Gb Ram Quadro FX3450)

Make sure your point cloud data is in this format: And the filename is
xyzpoints.txt.

-21.894799 33.314639 30.003743
-22.504399 33.345119 30.003743
-23.037799 33.340039 30.003743
-23.601679 33.223199 30.003743
-24.104599 33.182559 30.003743
-24.561799 33.248599 30.003743
-24.998679 33.075879 30.003743
-25.511759 33.065719 30.003743
-25.933399 32.887919 30.003743
-26.537919 32.715199 30.003743

Open a new part then run the macro from tools - macro - run. The txt file
needs to be in the same directory as the macro.

If you want to plot less points then you can change the point plot step
value in the script file from < 0 to something like < 10 and set the next
lines step increment to 10 as well. This will only plot every 10th Point.

Hope this helps you out.

Copy the code below into a new text file and save it with the .swb file
extension (pointcloud.swb) for instance. Then run the macro from within
solidworks.

-----START COPY FROM NEXT LINE-----
' 11/19/01 ALS: Developed and documented...Adam Smith Product Creation
Studio Seattle, WA USA (206) 297-7200 adam@productcreationstudio.com
'
' This example will open and read a comma, space, or tab delimited datafile
called xyzpoints.txt These
' points will then be used to generate a Point Cloud in a sketch of the
currently open document.
' This program could also be modified to create a 3D spline using the
InsertCurveFilePoint
' API function.
'
Public Sub Main()
Dim XVal(175000), YVal(175000), ZVal(175000) As Double '
Datapoints read from the datafile
' If hardcoded size unacceptable, use ReDim
' after determining number of lines in csv file.
Dim numPts As Double ' Track the total #
lines in the datafile
'Dim numa As Double ' Variable for Stopping
Short - Not Used
'Dim numb As Double ' Variable 2 for
Stopping Short - Not Used
Dim Xvalc as Double ' Converted X Datapoint
Dim Yvalc as Double ' Converted Y Datapoint
Dim ZValc as Double ' Converted Z Datapoint
Dim con As Double ' Variable to Store
Conversion Factor
Dim swApp As Object ' Variable to hold the
SldWorks object
Dim Model As Object ' Variable to hold the
ModelDoc object
Dim FileNum As Integer
Dim activeSketch As Object

FileNum = FreeFile ' Grab the next
available file number

con = .001 ' Set Conversion Factor
Here

Set swApp = CreateObject("SldWorks.Application") ' Attach to or open
SolidWorks session
Set Model = swApp.ActiveDoc ' Grab the current
document
If Model Is Nothing Then ' If no active doc found
swApp.SendMsgToUser "No active doc found!" ' Warning to the user
Exit Sub ' Exit this app
End If

Open "xyzpoints.txt" For Input As FileNum ' Optionally pop up dialog
here to locate
' desired file.

Do Until EOF(FileNum) ' Until EOF is reached
numPts = numPts + 1 ' Keep track of line
number
Input #FileNum, XVal(numPts), YVal(numPts), ZVal(numPts) ' Read
each line from datafile
Loop

Close #FileNum ' Close the datafile

swapp.sendmsgtouser "File read"

'numa = numPts - 10000 ' Number set for
Stopping after X number of points

'numb = numa - 200 ' Number set for
Stopping after y + X number of points

Set activeSketch = Model.GetActiveSketch
if (activeSketch Is Nothing) then ' If a Sketch is not active, then

swapp.sendmsgtouser "No Sketch created. One will be created for you"

Model.Insert3DSketch ' insert a new sketch
for our point cloud
Model.SetAddToDB True ' Set to true allows
data to be directly added to SW DB
Model.SetDisplayWhenAdded False ' Set to False
Deactivates display of data while plotting

end if ' This will fail if this is not the 1st sketch

'Do While numPts > numa
Do While numPts > 0 ' For each data point
down to specified number
numPts = numPts - 1 ' Countdown from
#Datapts by set number ie. plot every 5th point

XValc = XVal(numPts + 1) * con ' Convert Meters to
Units needed see con value above
YValc = YVal(numPts + 1) * con ' Convert Meters to
Units needed see con value above
ZValc = ZVal(numPts + 1) * con ' Convert Meters to
Units needed see con value above


Model.createpoint2 XValc, YValc, ZValc ' Draw points

loop

swapp.sendmsgtouser "points plotted"

Model.Insert3DSketch

End Sub
-----STOP COPY ON PREVIOUS LINE-----
Back to top
 
Post new topic   Reply to topic    CADForums.net Forum Index -> SolidWorks All times are GMT
Page 1 of 1

 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum




Windows Server DSP VoIP Electronics New Topics
Contact Us
Powered by phpBB