Professional Documents
Culture Documents
不错 :)。程序使用了一个简单的递归方法遍历了装配体。
'---------------------------------------
'
'
'
'---------------------------------------
Option Explicit
Public Enum swComponentVisibilityState_e
}}--> }}-->swComponentHidden = 0
}}--> }}-->swComponentVisible = 1
End Enum
Sub TraverseComponent _
( _
SldWorks.Configuration
}}--> }}-->Dim sPadStr }}--> }}-->As String
}}--> }}-->
}}--> }}-->Next i
}}--> }}-->
}}--> }}-->
}}--> }}-->
}}--> }}-->End If
}}--> }}-->
}}--> }}-->Next
End Sub
Sub main()
SldWorks.Configuration
End Sub
(出处:助跑学院)
说明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原
始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本
站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
打印本页 | 关闭窗口
solidworks 二次开发-01-录制一个宏
solidworks 二次开发-01-录制一个宏
第一步:
的。只是,solidworks 要复杂一些,直接录制的宏不能使用,需要做一些调整。在没有经验
的时候我们最好按照下面的建议来做。
Edit or Debug SolidWorks Macro
Edit or debug SolidWorks macros using Microsoft VBA. 使用 Microsoft VBA 编辑或
调试宏
Click Edit Macro on the Macro toolbar, or click Tools, Macro, Edit.
NOTES: 注意:
To automatically edit a macro after recording it, click Tools, Options, Systems
Options. On the General tab, select Automatically edit macro after recording
记录宏完毕后自动打开编辑界面。
If you recently edited the macro, you can select it from the menu when you
click Tools, Macro. This menu lists the last nine macros that you edited.
已经编辑了宏,菜单中会有最近的 9 个宏程序列表供选择。
In the dialog box, select a macro file (.swp) and click Open. 选择一个宏 swp 文
NOTE: You can also edit .swb files, which are older-style SolidWorks macro
的删掉吧
ModelDoc2::ClearSelection2 calls.
ModelDocExtension::SelectByID2.
(出处:助跑学院)
说明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原
始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本
站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
打印本页 | 关闭窗口
来学习两个 api:
第二个通过启用程序前已经选择的索引得到对象。
看下面程序:
Option Explicit
Sub main()
Debug.Print feature.Name
Else
Debug.Print "Error"
End If
End Sub
最后列出这两个函数的 VB 语法:
ModelDocExtension::SelectByID2
Description
Callout. SelectOption )
Input:
(BSTR) Name
Input:
(BSTR) Type
Input:
(double) X
X selection location or 0
Input:
(double) Y
Y selection location or 0
Input:
(double) Z
Z selection location or 0
Input:
(VARIANT_BOOL) Append
If...
Then...
TRUE
Not already selected
Already selected
FALSE
Already selected
Input:
(long) Mark
Value that you want to use as a mark; this value is used by other functions
(LPCALLOUT) Callout
Input:
(long) SelectOption
Output:
(VARIANT_BOOL) retval
SelectionMgr::GetSelectedObject5
Description
Input:
(long) AtIndex
Index position within the current list of selected items, where AtIndex ranges
from 1 to SelectionMgr::GetSelectedObjectCount
Output:
(LPDISPATCH) retval
(出处:助跑学院)
说明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原
始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本
站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
打印本页 | 关闭窗口
solidworks 二次开发-03-访问特征数据
solidworks 二次开发-03-访问特征数据
'coder arden
'filename : getchoosed.swp
'date :2005-03-22
'used to get the simple hole infomation dep & dia
'finished lucky !!
'------------------------------------------------------------
Option Explicit
Sub getselected()
MsgBox curfeature.Name
Set featdata = curfeature.GetDefinition '得到特征的定义
ncount = featdata.GetFeatureScopeBodiesCount
MsgBox ncount
dep = featdata.Depth
dia = featdata.Diameter
'featdata.ReleaseSelectionAccess
Model.Save
Model.EditRebuild
End Sub
**********************************************
上面程序运行前,假设你选择了一个简单直孔特征。然后得到这个孔德一些参数。
孔深、直径等。
看代码。
要访问一个特征,需要经历这样的步骤:
得到定义:GetDefinition
进行访问:AccessSelections
上面的程序没有 if 选择的容错机制,需要添加上。
(出处:助跑学院)
说明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原
始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本
站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
打印本页 | 关闭窗口
solidworks 二次开发-04-修改数据
solidworks 二次开发-04-修改数据
上次已经可以访问特征的各参数了,今天我们来修改它:
要修改前面的步骤不能少,当我们已经可以读取一些特征时,我们就可以给他设定一些值。
在修改完特征后需要调用函数 modifydefinition()来实现变化。
我们给一个例子,这个例子比前面的都要全面,它有很好的容错引导机制,可以直接拿来
成为一个稳定的宏程序。
加一倍
Then
的笨办法得到整数为 1 和 2
}}--> }}-->End If
}}-->
}}-->
}}-->
}}-->
}}--> }}-->' Get the selected object (first in the group if there are more
than one)
}}--> }}-->' Note that at this point CurFeature is just a Feature Object
swMbWarning, swMbOk
}}--> }}-->End If
swMbWarning, swMbOk
}}--> }}-->End If
}}-->
}}-->
}}--> }}-->' Get the access selections for the feature data
}}--> }}-->' Note that Component is NULL when accessing the selections of a
assembly, then model would refer to the top-level document in the assembly and
}}-->
}}-->
swMbWarning, swMbOk
}}--> }}-->End If
}}-->
}}-->
}}--> }}-->' Make sure the user has selected the base extrude
}}--> }}-->FeatData.ReleaseSelectionAccess
}}--> }}-->End If
}}-->
}}-->
}}--> }}-->' Change the depth of this extrusion to double its previous depth
}}-->
}}-->
}}-->
swMbWarning, swMbOk
}}--> }}-->' Release the AccessSelections
}}--> }}-->FeatData.ReleaseSelectionAccess
}}--> }}-->End If
}}-->
}}-->
End Sub
如果出现特征出现“退回”状态,我现在还没有找到问题的原因,只能在代码执行到最后
调用
Model.Save
Model.Rebuild
这两个函数来自动更新。
(出处:助跑学院)
说明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原
始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本
站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
打印本页 | 关闭窗口
网站首页 培训认证 免费论文 免费试卷 课件教案 助跑下载 助跑测试 电脑学习 网络导航 助跑论坛
操作系统 安全防御 编程指南 主页制作 多媒体 办公天地 英语翻译写作 英语口语 英语阅读 四六级考研 商务英语
搜索
我要找
网络学院 → 编程指南 → VS.NET → Solidworks 二次开发-05-装配体中插入零部件
Solidworks 二次开发-05-装配体中插入零部件
Solidworks 二次开发--装配体中插入零部件
则需要使用 addcomponent4。
先学习下语法:
addcomponent4:
行成功购返回一个指向该零件的指针。
于是我们可以如下写一个小程序,用来给装配体中插零件:
‘filename:insertPart.swp
‘write by
arden
2005-4-4
CurrentWorkingDirectory
Sub insertPart()
Set swApp = Application.SldWorks
End Sub
然而,这个程序比不是想象中那么好用。为什么呢??回头看 addcomponent4 的 remark,
上面这样写:
The specified file must be loaded in memory. A file is loaded into memory when
就是说你想指定的插入的文件必须在调用函数之前已经在内存中加载了。
不习惯,你就不能直接打开多简单,没办法,我还没有找到好的方法,只能按人家的来:
看看下面的函数 Opendoc6,它打开一个文档:
Opendoc6:
&Warnings )
defined in swDocumentTypes_e
model,
defined in swFileLoadError_e
swFileLoadWarning_e
Return: (LPDISPATCH) retval Pointer to a Dispatch object,
0 swDocNONE:不是 sw 文件
1 swDocPART:零件
2 swDocASSEMBLY:装配体
3 swDocDRAWING:工程图
如果想使用 swDocNONE,需要定义:
}--> }-->swDocNONE = 0
}--> }-->swDocPART= 1
}--> }-->swDocASSEMBLY = 2
swDocDRAWING=3
End Enum
还有只读、只看等选项
参数 4 是打开选项,一般置空
后面是两个 OutPut,用来显示错误打开时的提示
函数返回一个指向打开文件的指针。
按照上面的要求我们在向装配体中插入一个零部件时,需要这样步骤:
1、得到装配体
我们上面的程序需要这样来修改一下,添加了一个打开文档的函数:
' *****************************************************************************
arden
'插入零件 1
'
******************************************************************************
strpath = swApp.GetCurrentWorkingDirectory
End Sub
'这个函数打开零件 1
path = pth
nWarnings)
End Sub
这样的做法我感觉比较笨~为了赶工程进度我没有再去寻找好的方法,如果您知道有好的方
法请告知我,万分感谢。
(出处:助跑学院)
说明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必
注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,
我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更
正。
网站首页 培训认证 免费论文 免费试卷 课件教案 助跑下载 助跑测试 电脑学习 网络导航 助跑论坛
操作系统 安全防御 编程指南 主页制作 多媒体 办公天地 英语翻译写作 英语口语 英语阅读 四六级考研 商务英语
搜索
我要找
网络学院 → 编程指南 → VS.NET → Solidworks 二次开发—07—控制草图对象
Solidworks 二次开发—07—控制草图对象
Solidworks 二次开发—07—控制草图对象
件,里面充斥了 debug.print,只是向用户显示程序执行的结果。
'---------------------------------------------
'---------------------------------------------
Option Explicit
swSketchLINE = 0
swSketchARC = 1
swSketchELLIPSE = 2
swSketchSPLINE = 3
swSketchTEXT = 4
swSketchPARABOLA = 5
End Enum
Sub ProcessTextFormat _
( _
swApp As SldWorks.SldWorks, _
swModel As SldWorks.ModelDoc2, _
swTextFormat As SldWorks.textFormat _
swTextFormat.BackWards
swTextFormat.CharHeightInPts
swTextFormat.CharSpacingFactor
swTextFormat.Escapement
swTextFormat.IsHeightSpecifiedInPts
swTextFormat.LineSpacing
swTextFormat.ObliqueAngle
swTextFormat.Strikeout
swTextFormat.TypeFaceName
swTextFormat.Underline
Debug.Print " UpsideDown = " &
swTextFormat.UpsideDown
swTextFormat.Vertical
swTextFormat.WidthFactor
Debug.Print ""
End Sub
Function TransformSketchPointToModelSpace _
( _
swApp As SldWorks.SldWorks, _
swModel As SldWorks.ModelDoc2, _
swSketch As SldWorks.sketch, _
swSkPt As SldWorks.SketchPoint _
) As SldWorks.MathPoint
vPt = nPt
Set swMathUtil = swApp.GetMathUtility
Sub ProcessSketchLine _
( _
swApp As SldWorks.SldWorks, _
swModel As SldWorks.ModelDoc2, _
swSketch As SldWorks.sketch, _
swSkLine As SldWorks.SketchLine _
)
swSketch, swStartPt)
swEndPt)
Debug.Print " Start (sketch) = (" & swStartPt.x * 1000# & ", " &
swStartPt.y * 1000# & ", " & swStartPt.z * 1000# & ") mm"
1000# & ", " & swStartModPt.ArrayData(1) * 1000# & ", " &
Debug.Print " End (sketch) = (" & swEndPt.x * 1000# & ", " &
swEndPt.y * 1000# & ", " & swEndPt.z * 1000# & ") mm"
Debug.Print " End (model ) = (" & swEndModPt.ArrayData(0) * 1000#
& ", " & swEndModPt.ArrayData(1) * 1000# & ", " & swEndModPt.ArrayData(2) *
End Sub
Sub ProcessSketchArc _
( _
swApp As SldWorks.SldWorks, _
swModel As SldWorks.ModelDoc2, _
swSketch As SldWorks.sketch, _
swSkArc As SldWorks.SketchArc _
swSketch, swStartPt)
swEndPt)
swCtrPt)
vNormal = swSkArc.GetNormalVector
Debug.Print " Start (sketch) = (" & swStartPt.x * 1000# & ", " &
swStartPt.y * 1000# & ", " & swStartPt.z * 1000# & ") mm"
1000# & ", " & swStartModPt.ArrayData(1) * 1000# & ", " &
Debug.Print " End (sketch) = (" & swEndPt.x * 1000# & ", " &
swEndPt.y * 1000# & ", " & swEndPt.z * 1000# & ") mm"
& ", " & swEndModPt.ArrayData(1) * 1000# & ", " & swEndModPt.ArrayData(2) *
Debug.Print " Center(sketch) = (" & swCtrPt.x * 1000# & ", " &
swCtrPt.y * 1000# & ", " & swCtrPt.z * 1000# & ") mm"
Debug.Print " Center(model ) = (" & swCtrModPt.ArrayData(0) * 1000#
& ", " & swCtrModPt.ArrayData(1) * 1000# & ", " & swCtrModPt.ArrayData(2) *
Debug.Print " Radius = " & swSkArc.GetRadius * 1000# & " mm"
End Sub
Sub ProcessSketchEllipse _
( _
swApp As SldWorks.SldWorks, _
swModel As SldWorks.ModelDoc2, _
swSketch As SldWorks.sketch, _
swSkEllipse As SldWorks.SketchEllipse _
swSketch, swStartPt)
swEndPt)
swCtrPt)
swMajPt)
swMinPt)
Debug.Print " Start (sketch) = (" & swStartPt.x * 1000# & ", " &
swStartPt.y * 1000# & ", " & swStartPt.z * 1000# & ") mm"
1000# & ", " & swStartModPt.ArrayData(1) * 1000# & ", " &
Debug.Print " End (sketch) = (" & swEndPt.x * 1000# & ", " &
swEndPt.y * 1000# & ", " & swEndPt.z * 1000# & ") mm"
& ", " & swEndModPt.ArrayData(1) * 1000# & ", " & swEndModPt.ArrayData(2) *
Debug.Print " Center(sketch) = (" & swCtrPt.x * 1000# & ", " &
swCtrPt.y * 1000# & ", " & swCtrPt.z * 1000# & ") mm"
& ", " & swCtrModPt.ArrayData(1) * 1000# & ", " & swCtrModPt.ArrayData(2) *
swMajPt.y * 1000# & ", " & swMajPt.z * 1000# & ") mm"
& ", " & swMajModPt.ArrayData(1) * 1000# & ", " & swMajModPt.ArrayData(2) *
Debug.Print " Minor (sketch) = (" & swMinPt.x * 1000# & ", " &
swMinPt.y * 1000# & ", " & swMinPt.z * 1000# & ") mm"
& ", " & swMinModPt.ArrayData(1) * 1000# & ", " & swMinModPt.ArrayData(2) *
End Sub
Sub ProcessSketchSpline _
( _
swApp As SldWorks.SldWorks, _
swModel As SldWorks.ModelDoc2, _
swSketch As SldWorks.sketch, _
swSkSpline As SldWorks.SketchSpline _
)
Dim vSplinePtArr As Variant
vSplinePtArr = swSkSpline.GetPoints2
swSketch, swSplinePt)
Debug.Print " Spline (sketch) = (" & swSplinePt.x * 1000# & ", "
& swSplinePt.y * 1000# & ", " & swSplinePt.z * 1000# & ") mm"
1000# & ", " & swSplineModPt.ArrayData(1) * 1000# & ", " &
Next vSplinePt
End Sub
Sub ProcessSketchText _
( _
swApp As SldWorks.SldWorks, _
swModel As SldWorks.ModelDoc2, _
swSketch As SldWorks.sketch, _
swSkText As SldWorks.SketchText _
)
vCoordPt = swSkText.GetCoordinates
Set swMathUtil = swApp.GetMathUtility
Debug.Print " Coords (sketch) = (" & vCoordPt(0) * 1000# & ", " &
vCoordPt(1) * 1000# & ", " & vCoordPt(2) * 1000# & ") mm"
Debug.Print " Coords (model ) = (" & swCoordModPt.ArrayData(0) *
1000# & ", " & swCoordModPt.ArrayData(1) * 1000# & ", " &
End Sub
Sub ProcessSketchParabola _
( _
swApp As SldWorks.SldWorks, _
swModel As SldWorks.ModelDoc2, _
swSketch As SldWorks.sketch, _
swSkParabola As SldWorks.SketchParabola _
)
Dim swApexPt As SldWorks.SketchPoint
swSketch, swApexPt)
swEndPt)
swSketch, swFocalPt)
Debug.Print " Apex (sketch) = (" & swApexPt.x * 1000# & ", " &
swApexPt.y * 1000# & ", " & swApexPt.z * 1000# & ") mm"
& ", " & swApexModPt.ArrayData(1) * 1000# & ", " & swApexModPt.ArrayData(2) *
Debug.Print " Start (sketch) = (" & swStartPt.x * 1000# & ", " &
swStartPt.y * 1000# & ", " & swStartPt.z * 1000# & ") mm"
Debug.Print " Start (model ) = (" & swStartModPt.ArrayData(0) *
1000# & ", " & swStartModPt.ArrayData(1) * 1000# & ", " &
Debug.Print " End (sketch) = (" & swEndPt.x * 1000# & ", " &
swEndPt.y * 1000# & ", " & swEndPt.z * 1000# & ") mm"
& ", " & swEndModPt.ArrayData(1) * 1000# & ", " & swEndModPt.ArrayData(2) *
Debug.Print " Focal (sketch) = (" & swFocalPt.x * 1000# & ", " &
swFocalPt.y * 1000# & ", " & swFocalPt.z * 1000# & ") mm"
1000# & ", " & swFocalModPt.ArrayData(1) * 1000# & ", " &
Sub main()
Dim i As Long
Dim bRet As Boolean
sSkSegmentsName(swSketchLINE) = "swSketchLINE"
sSkSegmentsName(swSketchARC) = "swSketchARC"
sSkSegmentsName(swSketchELLIPSE) = "swSketchELLIPSE"
sSkSegmentsName(swSketchSPLINE) = "swSketchSPLINE"
sSkSegmentsName(swSketchTEXT) = "swSketchTEXT"
sSkSegmentsName(swSketchPARABOLA) = "swSketchPARABOLA"
Debug.Print "Feature = " & swFeat.Name & " [" & swSketch.Is3D & "]"
vSkSegArr = swSketch.GetSketchSegments
vID = swSkSeg.GetId
Debug.Print " ID = [" & vID(0) & "," & vID(1) & "]"
sSkSegmentsName(swSkSeg.GetType)
Case swSketchLINE
Case swSketchARC
Set swSkArc = swSkSeg
Case swSketchELLIPSE
Case swSketchSPLINE
Case swSketchPARABOLA
Case Default
Debug.Assert False
End Select
Next vSkSeg
End Sub
'---------------------------------------------
(出处:助跑学院)
说明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原
始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本
站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
打印本页 | 关闭窗口
件
·solidworks 二次开发--10--从 example 中寻
找
·solidworks 二次开发--11--开始总体了解
关于助跑网 | 联系我们 | 广告服务 | 免责声明 | 招贤纳士 | 博客之家 | 助跑论坛
Solidworks 二次开发—06—在装配体中添加配合
Solidworks 二次开发—06—在装配体中添加配合
折腾了三天终于完成了计划中的功能模块。在一个装配体中自动判断插入合适的零件,并
添加配合。
在前面几篇文章中我已经基本上说明了如何得到零部件的数据信息、如何插入零部件、如何
得到已经选择的特征等。
下面只介绍怎样进行配合
在做配合时,需要经常选择到零件的面、线等,这是一个问题,还有就是介绍一下
addmate2 函数的使用:
一般进行配合我们按照下面的次序来进行:
1-ModelDoc.ClearSelection2 ‘取消所有选择
2-选择需要配合的实体(entity)
由于面的命名没有什么规律,很多时候是程序自动来命名的,这样,不方便使用
selectbyID 来选择,我也不想使用坐标值来选择一个面,那样做更加糟糕。
在得到一个组件(component)或者一个特征(feature)时,我们有
getfaces、getfirstface、getnextface 等方法,我们可以使用这些方法遍历一个组件或特
征等的各个面,来达到选择面的目的,看下面程序:
Boolean
Set swdowelbody = dcom.GetBody()
selectface = False
Exit Function
End If
selectface = True
Exit Function
End If
来定义好多分支
selectface = True
Exit Function
End If
End If
Set swDCface = swDCface.GetNextFace
Loop
End Function
圆柱面,1 表示平面。此函数运行完成后将选择指定组件的指定类型的一个面。需要注意的
象,用来 select4,达到选择的目的。可能这个过程有些复杂,大家按照这个顺序多测试几
次,就明白了它的工作原理。
上面的函数写的并不好,是我从我的工程中截取的一段。
errorStatus )
参数:
Input:
(long) mateTypeFromEnum
Type of mate as defined in swMateType_e
配合类型
Input:
(long) alignFromEnum
对齐选项
Input:
(VARIANT_BOOL) flip
Input:
(double) distance
Distance value to use with distance or limit mates
距离
Input:
(double) distAbsUpperLimit
距离限制 max
Input:
(double) distAbsLowerLimit
Input:
(double) gearRatioNumerator
Gear ratio numerator value for gear mates
齿轮配合分子值
Input:
(double) gearRatioDenominator
齿轮配合分母值
Input:
(double) angle
Input:
(double) angleAbsUpperLimit
Absolute maximum angle value
角度限制 max
Input:
(double) angleAbsLowerLimit
角度限制 min
Output:
(long) errorStatus
Return:
(LPMATE2) pMateObjOut
Pointer to the Mate2 object
返回指向配合的指针
Remarks
指定一个没有限制的距离,设定距离限制的最大、最小值和距离值相等
angle, then setting flip to TRUE moves the assembly to the other possible mate
position.
如果是距离或角度配合,配合将从符合条件的最近端进行配合,我们可以设定 flip 为
true,改变配合至另一个合适的位置
Use:使用配合的步骤
如果实现没有限定实体来配合,将会抱错 swAddMateError_IncorrectSeletions,函数返
回 NULL 或者 Nothing
上面就是 API 帮助所说的话,下面给出一段示例程序,假设之前我们已经选择了两个半径
一样的圆柱面,那么我们来定义一个同心配合:
Set swmatefeat = swassy.AddMate2(1, 0, False, 0, 0, 0, 0, 0, 0, 0, 0, nErrors)
VB 自己去匹配。但这样做是影响了效率。
要完成一个距离或者角度要麻烦一些,就像上面的 remark 中说明的:
0, nErrors)
配合中的限制条件,会报错。并且第三个参数和第二个参数需要按实际情况来确定。
最后我们列出 AddMate2 的类型:
swMateType_e
‘Specifies values for assembly-mate information.
swMateCOINCIDENT 0 重合
swMateCONCENTRIC 1 同心
swMatePERPENDICULAR 2 垂直
swMatePARALLEL 3 平行
swMateTANGENT 4 相切
swMateDISTANCE 5 距离
swMateANGLE 6 角度
swMateUNKNOWN 7 未知
swMateSYMMETRIC 8 对称
swMateCAMFOLLOWER 9 凸轮
swMateGEAR 10 齿轮
(出处:助跑学院)
说明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原
始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本
站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
打印本页 | 关闭窗口