
發布
注冊
/
登錄obj的案例
介紹將for文件編譯為obj文件的方法。
abaqus通過cmd窗口提供了方法,可以將for文件編譯為obj文件。
1、cmd窗口中的文件路徑切換方法
"盤符:"---將路徑切換到某一個盤符,如”c:“即將工作路徑切換到c盤。
"cd.."---將路徑后退一個文件夾.
"cd filename"---在當前工作路徑下前進到filename對應的文件中。
2、編譯for文件的命令行
將工作路徑移動到for文件對應的文件后,輸入下列命令行:
"abaqus make library=filename.for"---即將filename.for文件編譯為obj文件,
打開obj文件,發現該文件已經不可讀取,具有保密性。
展開 二次開發的一些體會(網友撰寫)【精華】【轉】
siappst.lib Delayimp.lib \
htmlhelp.lib lmgr_md.lib lm_new_md.obj \
lmappfil.obj nt_WinAnsys.obj nt_uiloop.obj \
nt_WinGUI.obj nt_WinMain.obj INEXNT.obj \
MATHLIBC.obj elshfn.obj pElData.obj WinAnsys.res \
masscoeFtri.obj mscoef.obj nodf10.obj nodfTri.obj \
nshpderv.obj stcoef.obj stcoefTri.obj thcoef.obj \
thcoefTri.obj Trinshpderv.obj sstiff2d.obj \
sstiff3d.obj amgsolver.obj amg_init.obj \
elcjfill.obj tess_info.obj userlink.obj
LINK32_OBJS= *.obj
Ansys.exe: $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
展開 終極蛇皮上帝視角之微信小程序之告別 setData
// ... /** * 遞歸觀察對象 * @param {any} obj 待觀察對象 * @return {any} 已被觀察的對象 */ const observeDeep = (obj) => { if (typeof obj === 'object') { const observedObj = Object.create(null) Object.keys(obj).forEach((key) => { if (/^__.*__$/.test(key)) return defineReactive( observedObj, key, // -> 注意在這里遞歸 observeDeep(obj[key]), ) }) return observedObj } // 簡單屬性直接返回 return obj } // ... 復制代碼
3.劫持數組方法
大家都知道,Vue 劫持了一些數組方法。
展開 說透互補濾波(1) - 線性互補濾波器從原理到實現
function obj = UpdateIMU(obj, Gyroscope, Accelerometer)
q = obj.Quaternion;
if(norm(Accelerometer) == 0), return; end
Accelerometer = Accelerometer / norm(Accelerometer);
v = [2*(q(2)*q(4) - q(1)*q(3))
2*(q(1)*q(2) + q(3)*q(4))
q(1)^2 - q(2)^2 - q(3)^2 + q(4)^2];
e = cross(Accelerometer, v);
if(obj.Ki > 0)
obj.eInt = obj.eInt + e * obj.SamplePeriod;
else
obj.eInt = [0 0 0];
end
Gyroscope = Gyroscope + obj.Kp * e + obj.Ki * obj.eInt;
qDot = 0.5 * quaternProd(q, [0 Gyroscope(1) Gyroscope(2) Gyroscope(3)]);
q = q + qDot * obj.SamplePeriod;
obj.Quaternion = q / norm(q);
end
你看著開源的代碼和自己畫的流程圖,反復對照了20遍,突然想到了自己上數學課的樣子。
于是你又上網看了無數的互補濾波解讀教程,始終不理解,為什么算法原理和代碼可以沒有任何關系?,那這個算法是怎么寫成代碼的呢?
展開 
[FRED] 數據收集面可視化
下面關聯的FRED文件為用非多面體曲面建立的相同模型,(使用中)用戶需要按下面文章的方法把幾何結構導出成OBJ格式文件,然后再把OBJ格式文件導入。
參見:
? 幾何體導出成OBJ格式文件
https://support.photonengr.com/article/219-exporting-geometry-to-obj-file
? 導入OBJ格式文件
https://support.photonengr.com/article/221-importing-an-obj-file
? fred案例模型
5d23b15e04286369ad8d717c/RoomScene.frd
展開 你不知道的CAE小常識(二十六)
基本編譯思想:寫好fortran子程序之后,通過IVF編譯器以及nmake命令編譯for子程序,生成obj目標文件和求解器。
簡化方法:
1、利用文本編輯器寫fortran子程序,起個方便查看的名字, 存為.f格式文件,比如umat41-for-shell.f。
2、打開dyn21.f文件,注釋掉subroutine umat41 (cm,eps,sig,epsp,hsv,dt1,capa,etype,tt,temper,failel,crv,cma)下這一整個子程序的語句(包括這個語句),或者直接刪掉這部分子程序的內容。保存dyn21.f。
3、用文本編輯器打開makefile,做如下修改:
1) OBJS= dyn21.obj dyn21b.obj一行中,增加umat41-for-shell.obj。變為OBJS= dyn21.obj dyn21b.obj umat41-for-shell.obj
2)參照dyn21.obj: dyn21.F
$(FC) $(FFLAGS) dyn21.F
格式,書寫兩行語句
umat41-for-shell.obj:umat41-for-shell.f
$(FC) $(FFLAGS) umat41-for-shell.f
比如:
dyn21.obj: dyn21.F
$(FC) $(FFLAGS) dyn21.F
dyn21b.obj: dyn21b.F
$(FC) $(FFLAGS) dyn21b.F
umat41-for-shell.obj: umat41-for-shell.f
$(FC) $(FFLAGS) umat41-for-shell.f
然后保存makefile。
3)用IVF編譯器和nmake命令編譯子程序。這步以及后續的步驟與df_af_aq寫的基本流程一樣。
展開 說透互補濾波(1) - 線性互補濾波器從原理到實現
function obj = UpdateIMU(obj, Gyroscope, Accelerometer)
q = obj.Quaternion;
if(norm(Accelerometer) == 0), return; end
Accelerometer = Accelerometer / norm(Accelerometer);
v = [2*(q(2)*q(4) - q(1)*q(3))
2*(q(1)*q(2) + q(3)*q(4))
q(1)^2 - q(2)^2 - q(3)^2 + q(4)^2];
e = cross(Accelerometer, v);
if(obj.Ki > 0)
obj.eInt = obj.eInt + e * obj.SamplePeriod;
else
obj.eInt = [0 0 0];
end
Gyroscope = Gyroscope + obj.Kp * e + obj.Ki * obj.eInt;
qDot = 0.5 * quaternProd(q, [0 Gyroscope(1) Gyroscope(2) Gyroscope(3)]);
q = q + qDot * obj.SamplePeriod;
obj.Quaternion = q / norm(q);
end
你看著開源的代碼和自己畫的流程圖,反復對照了20遍,突然想到了自己上數學課的樣子。
于是你又上網看了無數的互補濾波解讀教程,始終不理解,為什么算法原理和代碼可以沒有任何關系?
展開 abaqus 腳本捕獲幾何元素的交、并、差運算 ¥20
以下代碼是封裝abaqus對象的自定義類:
# obj 是需要封裝的abaqus對象
class Hashobj(object):
def __init__(self, obj):
self.obj = obj
def __eq__(self, other):
return self.obj == other.obj
def __hash__(self):
return hash(self.obj.featureName) ^ \
hash(self.obj.index) ^ \
hash(self.obj.instanceName) ^ \
hash(self.obj.isReferenceRep) ^ \
hash(self.obj.pointOn)
結合第二步的功能,第一步中的代碼可以寫成一個函數,并且直接返回根據列表轉化而來的集合。代碼如下:
# newlist是python空列表
# seq是abaqus的幾何序列<type ‘FaceArray’>,其中的元素用obj代表
def turn2set(seq):
newlist = []
for obj in seq:
newlist.append(Hashobj(obj))
return set(newlist)
3、水到渠成,實現交、并、差運算
只要調用前文給出的turn2set函數,就可以把幾何序列轉化為python集合,實現交、并、差運算的代碼就十分簡單了。
展開 數據收集面可視化
下面關聯的FRED文件為用非多面體曲面建立的相同模型,(使用中)用戶需要按下面文章的方法把幾何結構導出成OBJ格式文件,然后再把OBJ格式文件導入。
參見:? 幾何體導出成OBJ格式文件https://support.photonengr.com/article/219-exporting-geometry-to-obj-file? 導入OBJ格式文件https://support.photonengr.com/article/221-importing-an-obj-file? fred案例模型5d23b15e04286369ad8d717c/RoomScene.frd
展開 快速逆向建模-自動轉實體軟件Quick Surface 2.0 Build 5 x64
那么對stl\obj文件有處理需求的小伙伴,即可點擊下面的連接一起研究如何快速轉stp實體文件:
stl、obj快速轉STP研習課程-技術鄰社區 https://www.yqgqt.org.cn/college/video/c14526
課程對象
需要對stl,obj處理的機加工設計人員。
ID創意設計人員。
課程概述
針對掃描生成的精密stl\obj,3Dmax、Cinema 4D、ZBrush、Maya導出的stl\obj有效,3D溜溜網下載的stl、obj,無需重新勾線、描線,快速轉STP實體文件。
展開 Abaqus 子程序開發日志07-vumat之anisotropic
正交各向異性(工程常數):
EngineeringConstants-xplD.obj
EngineeringConstants-xpl.obj
共享庫:
explicitU.dll
explicitU-D.dll
參數輸入依次為:
E1,E2,E3,Nu23,Nu13,Nu12,G23,G13,G12
正交各向異性(剛度系數):
OrthogonallyAnisotropic-xpl.obj
OrthogonallyAnisotropic-xplD.obj
共享庫:
explicitU.dll
explicitU-D.dll
?參數輸入依次為:
D1111,D1122,D2222,D1133,D2233,D3333,D1212,D1313,D2323
(按照σ1,σ2,σ3,┏12,┏13,┏23的形式輸入)
橫觀各向同性:
TransverselyIsotropic-xpl.obj
TransverselyIsotropic-xplD.obj
共享庫:
explicitU.dll
explicitU-D.dll
?參數輸入依次為:
Et(軸/橫向彈性模量)、Ep(面內彈性模量)、Nutp(面外泊松比,也就是說假設1為軸向,那么Nu12/13的值為Nutp)、Nup(面內泊松比)、Gt(軸/橫向剪切模量)
(這里的軸/橫向對abaqus來說是局部方向的1方向)
完全各向異性:
fullyanisotropic-xpl.obj
fullyanisotropic-xplD.obj
展開 
umat子程序運行出錯
End Compiling Abaqus/Standard User Subroutines
Begin Linking Abaqus/Standard User Subroutines
libifcoremt.lib(for_fp_class.obj) : error LNK2005: for_is_nan_t_ 已經在 LIBIFCOREMD.LIB(libifcoremd.dll) 中定義
libifcoremt.lib(for_vm.obj) : error LNK2005: for_allocate 已經在 LIBIFCOREMD.LIB(libifcoremd.dll) 中定義
libifcoremt.lib(for_vm.obj) : error LNK2005: for_deallocate 已經在 LIBIFCOREMD.LIB(libifcoremd.dll) 中定義
libifcoremt.lib(for_close.obj) : error LNK2005: for_close 已經在 LIBIFCOREMD.LIB(libifcoremd.dll) 中定義
libifcoremt.lib(for_open.obj) : error LNK2005: for_open 已經在 LIBIFCOREMD.LIB(libifcoremd.dll) 中定義
展開 幾種常用的矩陣迭代求解算法
]])
# 測試方程組3
# A = np.array([[16, 4, 8], [4, 5, -4], [8, -4, 22]], dtype=float)
# b = np.array([[4], [2], [5]], dtype=float)
# x = np.array([[1], [1], [1]], dtype=float)
#測試方程組4
# A = np.array([[1, -1, 0, 0], [-0.1, 1, -0.9, 0], [0, -0.9, 1, -0.1], [0, 0, 0, 1]], dtype=float)
# b = np.array([[9], [0], [0], [0]], dtype=float)
# x = np.array([[19], [10], [1],[0]], dtype=float)
# 共軛梯度
t1 = time.time()
Obj = Iteration(A, x, b)
results1 = Obj.conj_gradient(tol, itertimemax)
t2 = time.time()
# 超松弛
t1 = time.time()
Obj = Iteration(A, x, b)
results = Obj.Successive_Over_Relaxation(emega, n)
t2 = time.time()
print(results, f"超松弛耗時{t1-t2}")
# 高斯賽德爾
t1 = time.time()
Obj = Iteration(A, x, b)
results = Obj.Gauss_Seidel
展開 『原創』db.msg文件的結構
6825 7091 7130 7505 7754 7780 7796 8082 8083
8095 8538
The following nodes of Obj. 1 have separated from Die 3
3801 3803 4114 4120 4165 4425 4430 4431 4435 4845 5132 5155
5411 5761 5813 5819 5820 5901 5904 5988 6174 6563 6803
TEMPERATURE CALCULATION FOR STEP : 141
TEMPERATURE ITERATION
ITERATION TEMPERATURE RELATIVE TEMPERATURE
NUMBER NORM ERROR NORM
1 0.0000000000E+00 0.2030939879E+01
2 0.1848465799E+02 0.8272498236E-04
The following nodes of Obj. 1 will not contact Die 2 because of previous separation.
6107 6123 6582 6825 7091 7130 7505 7754 7780 7796 8082 8083
8095 8538
The following nodes of Obj. 1 have
展開 FRED光學工程仿真-數據收集面可視化
下面關聯的FRED文件為用非多面體曲面建立的相同模型,(使用中)用戶需要按下面文章的方法把幾何結構導出成OBJ格式文件,然后再把OBJ格式文件導入。