Ich bin auf der Suche nach einer Möglichkeit, 3D-PDF aus den Ergebnissen ABAQUS/Viewer zu drucken. Dies macht es einfacher, die Ergebnisse mit anderen zu kommunizieren, die an den Ergebnissen der Simulation interessiert sind, aber keinen Zugang zu ABAQUS haben.Wie drucke ich ein 3D-PDF von ABAQUS/Viewer?
Antwort
Am besten exportieren Sie eine VRML-Datei und konvertieren sie mit Tetra4D oder pdf3D und Adobe Acrobat Professional. Die 3D-PDFs können sehr gut aussehen. Die kommerzielle Software würde jedoch über £ 800 pro Jahr kosten. Ich habe ein Python-Skript erstellt, um ein 3D-PDF direkt aus Abaqus/CAE & Viewer zu erstellen, der 2 Open-Source-Tools verwendet: 1) Meshlab (http://www.meshlab.net/), um eine U3D-Datei zu erstellen, 2) MiKTeX (https://miktex.org/), um die U3D-Datei zu konvertieren pdf. Die Ausgabe ist nicht so poliert wie Tetra4D, aber es funktioniert. Ich habe das mit der neuesten Version von Meshlab nicht ausprobiert. Führen Sie dieses Skript einfach in Abaqus/CAE oder Abaqus/Viewer aus.
# Abaqus CAE/Viewer Python Script to create a 3D pdf directly from Abaqus/CAE or Abaqus/Viewer.
# You must first install meshlab (meshlabserver.exe)and MiKTeX (pdflatex.exe)
# Edit this script to reflect the installed locations of meshlabserver.exe and pdflatex.exe
# It will export a stl or obj file the mesh of current viewport and convert into 3D pdf
# Or run in Abaqus/viewer and it will create a VRML file and convert to 3D pdf.
# If contours are displayed in Abaqus Viewer, then it will create a contour 3D pdf
from abaqus import *
from abaqusConstants import *
from viewerModules import *
import os
import subprocess
import sys
# -----------------------------------------------------------------------------
pdfName='try'
meshlab_path="C:/Program Files/VCG/MeshLab/meshlabserver.exe"
pdfLatex_path="C:/Program Files (x86)/MiKTeX 2.9/miktex/bin/pdflatex.exe"
# -----------------------------------------------------------------------------
currView=session.viewports[session.currentViewportName]
try: # for Abaqus Viewer
cOdbD=currView.odbDisplay
odb = session.odbs[cOdbD.name]
name=odb.name.split(r'/')[-1].replace('.odb','')
module='Vis'
except: # Abaqus CAE
#name=currView.displayedObject.modelName
import stlExport_kernel
name = repr(currView.displayedObject).split('[')[-1].split(']')[0][1:-1] # allows for either main or visulation modules
module='CAE'
print module
if module=='CAE':
#All instances must be meshed
cOdbD=None
try:
ext='.stl'
stlExport_kernel.STLExport(moduleName='Assembly', stlFileName=pdfName + ext, stlFileType='BINARY')
except:
try:
ext='.obj'
session.writeOBJFile(fileName=os.path.join(directory,pdfName + ext), canvasObjects= (currView,))
except:
print 'Either your assembly is not fully meshed or something else'
directory=(os.getcwd())
else: # Abaqus/Viewer
if cOdbD.viewCut:
session.graphicsOptions.setValues(antiAlias=OFF) # Better with anti aliasing off
odb = session.odbs[cOdbD.name]
directory=odb.path.replace(odb.path.split('/')[-1],'').replace('/','\\')
# Turn off most of the stuff in the viewport
currView.viewportAnnotationOptions.setValues(triad=OFF,
legend=OFF, title=OFF, state=OFF, annotations=OFF, compass=OFF)
ext='.wrl'
session.writeVrmlFile(fileName=os.path.join(directory,pdfName + ext),
compression=0, canvasObjects= (currView,))
pdfFilePath=os.path.join(directory,pdfName+'-out.pdf')
if os.path.isfile(pdfFilePath):
os.remove(pdfFilePath)
#Check file was deleted
if os.path.isfile(pdfFilePath):
print "Aborted because pdf file of same name cant be deleted. Please close programs which it might be open in"
1/0 #a dodgy way to exit program
# Invoke meshlab to convert to a .u3d file
if cOdbD: #If in Abaqus/viewer
if 'CONTOURS' in repr(cOdbD.display.plotState[0]): # If contours are displayed. Output contoured pdf
p=subprocess.Popen([meshlab_path,'-i',pdfName + ext, '-o',pdfName + '.u3d','-m','vc']) #'vn fn fc vt'
else:
p=subprocess.Popen([meshlab_path,'-i',pdfName + ext, '-o',pdfName + '.u3d'])
else:
p=subprocess.Popen([meshlab_path,'-i',pdfName + ext, '-o',pdfName + '.u3d'])
p.communicate() # Wait for meshlab to finish
file_fullPathName=os.path.join(directory, pdfName + '.tex')
#Read the .tex file which meshlab has just created
with open(file_fullPathName, 'r') as texFile:
lines = texFile.read()
#Edit the .tex file
lines=lines.replace("\usepackage[3D]{movie15}","\\usepackage[3D]{movie15}\n\\usepackage[margin=-2.2in]{geometry}")
if cOdbD:
if 'CONTOURS' in repr(cOdbD.display.plotState[0]):
lines=lines.replace("3Dlights=CAD,","3Dlights=CAD,\n\t3Drender=SolidWireframe,")
lines=lines.replace("\n\end{document}","{---------------------------------------------------------------------------------Click above! MB1 - rotate, MB2 wheel or MB3 - zoom, Ctrl-MB1 - pan--------------}\n\\end{document}")
file_fullPathName=os.path.join(directory, pdfName + '-out.tex')
with open(file_fullPathName, "w") as outp:
outp.write(lines)
p=subprocess.Popen([
pdfLatex_path,
pdfName + '-out.tex',
])
p.communicate()
print 'Conversion to pdf complete'
print file_fullPathName
Der einfachste Weg, die Abaqus * .odb Ergebnisse des Druckens 360 verwenden Tecplot, die die * Abaqus gelesen wird .odb Dateien und Sie können die * .tif erhalten und * .png Ergebnisse mit allen möglichen Auflösungen und Sie können Drehen Sie das Modell auch in 3D und ändern Sie die Schriftarten und alle Dinge, die Sie brauchen.
- 1. Wie drucke ich ein Bit?
- 2. Wie drucke ich ein Datum in C?
- 3. Wie drucke ich ein Array mit Attributen?
- 4. C++ Wie drucke ich ein Objekt?
- 5. Wie drucke ich ein anderes Gebietsschema?
- 6. Wie drucke ich Java in ein Fenster
- 7. Wie drucke ich ein Objekt aus?
- 8. Wie drucke ich ein HTML-Dokument von einem Web-Service?
- 9. Wie drucke ich ein Bild von einem Uri?
- 10. Wie drucke ich ein Array von ArrayList in Java?
- 11. Wie drucke ich ein Dreieck von Sternen mit SQL
- 12. Wie drucke ich Arrays?
- 13. Wie drucke ich Umgebungsvariablen?
- 14. Wie drucke ich mein Formular?
- 15. Wie drucke ich nur Text?
- 16. Wie drucke ich chinesische Buchstaben von R?
- 17. Wie drucke ich eine Datei von VsCode?
- 18. Wie drucke ich die Speicheradresse von void **?
- 19. Wie drucke ich eine Speicheradresse?
- 20. Wie drucke ich falsche Fragen?
- 21. Wie drucke ich das Quadratwurzelsymbol?
- 22. Wie drucke ich $ rootScope-Variable?
- 23. Wie drucke ich Datei C#
- 24. Wie drucke ich diesen Datenrahmen?
- 25. Wie drucke ich ein Typedef Element vom Typ String?
- 26. Delphi: Wie drucke ich ein PDF, ohne es zu zeigen?
- 27. Wie drucke ich ein Register in der Console x86 Assembly?
- 28. Wie drucke ich ein Perl 2-dimensionales Array?
- 29. Drucke ein Array von Objekt aus
- 30. Wie drucke ich eine Accessor-Methode in ein Hauptprogramm?
Ich habe gerade Ihre Lösung versucht und bestätige, dass es funktioniert und ich bin sehr zufrieden mit den Ergebnissen. Danke !! – CodeCupboard
@churchwalk Froh, dass Sie zufrieden sind. Ich war nicht in der Lage, einen Schattenwurf zu finden, um mit dem konturierten Export von AbaqusViewer zu arbeiten. Aber es sieht immer noch ziemlich gut aus. – DougR
Interessanterweise könnte diese Methode verwendet werden, um ein 3D-Bild in einer PowerPoint-Präsentation zu erstellen? – CodeCupboard