成吉思汗西征之攻克撒马尔罕

1220年5月,蒙古四路大军在新都撒马尔罕城下会师。撒马尔罕,现属乌兹别克斯坦。因其建立在泽拉夫善河南岸,又被称为河中府。西辽建立后,原以虎思斡尔朵(八剌沙衮)为都城,后来又以撒马尔罕为都城,建立东西二都。后来乃蛮部的屈出律伙同花喇子模推翻西辽政权,河中府一带即属花喇子模所有,摩诃末于是将首都从玉龙杰(今土库曼斯坦乌尔根奇) 迁都到撒马尔罕。

摩诃末为了守护首都,组建了11万的雇佣军负责守卫城池。其中六万为突厥人,首领为塔海汗;5万人为大食人(这里是突厥人对伊朗人的称呼,不是特指阿拉伯人)。并且连夜加固城墙,在城外修建了4-5道环形堡垒,作为首都的外部防御阵地,可以看出是要与成吉思汗决一死战之势。但是摩诃末的多疑和胆小毁掉了他原本胜利的信心。当得知成吉思汗大军顺利到达河中时,却慌张的离开了撒马尔罕,带领一部分军队逃跑了。国王的逃跑,军队的士气开始衰竭,撒马尔罕失败的命运已经注定了。

虽然国王临阵逃跑,但是蒙古大军在强攻撒马尔罕城却并不顺利。城里守将阿勒巴里汗和塔海汗领导十一万雇佣军抵挡住蒙古大军多次进攻,并将大象投入了战斗。在巨象的冲击下蒙古军队死伤无数,最后想出对付的办法,他们远远用弓箭射击大象没有被保护的部位,受伤后的大象疯狂,如同散落的棋子发疯的在军队中乱串,将本来在大象掩护下的士兵都死在了大象践踏之下。

经过8天的苦战,蒙古大军最终攻克撒马尔罕城。同时美丽的撒马尔罕城也遭到了严重的摧毁,推到了部分城墙,将古老的礼拜寺也付之一炬。城内投降的3万突厥雇佣兵包括首领脱海罕被赶尽杀绝。城中百姓也死伤无数,幸运的是没有被大批屠杀,成吉思汗只是从居民中挑选了3万名工匠和万名壮丁随军役夫。其余的军民交完赎金返回都城。 此役之后,花剌子模全境介被攻陷,只剩下旧都玉龙杰赤。成吉思汗遂命耶律阿海留守撒马尔罕城城内,命大将哲别、速不台率3万骑兵沿巴里黑(今阿富汗马札里沙夫西)追击摩诃末·苏丹;另派葛达黑那颜、牙撒兀儿到塔里寒(也称塔里干、塔里堪、塔力坚,今阿富汗东北部塔利甘);以及派拖雷率7万骑兵,相即扫荡呼罗珊,支援哲别、速不台、脱忽察儿,平定为收复之地。最后命窝阔台率术赤、察合台进攻玉龙杰赤。

雅阁架空线路辅助设计(WCAD)教学视频——删除杆塔

本教学视频的关键步骤提示如下:

1、激活线路图形文件(dwg),并进入删除杆塔页面;

2、点击进入调整,在线路图形文件(dwg)作图区域删除某一基或多基杆塔,即可看到删除后的效果;

3、点击结束调整。

NotePad 函数系列之二

Public Sub TampNotePad(ByVal sTxtFile As String, Optional ByVal bTrimRow As Variant = True) ‘对文本文件消除空行, bTrimRow 为真, 则行 ” ” 视为空行 “”
On Error Resume Next
Dim I As Integer, J As Integer
Dim Lines() As String
Dim LineContent As String
Dim iLineCount As Integer
Dim TxtFileNumber As Integer
TxtFileNumber = FreeFile
If Not FileExist(sTxtFile) Then Exit Sub
Open sTxtFile For Input As TxtFileNumber
Do While Not EOF(TxtFileNumber) ‘把文本读至数组
Line Input #TxtFileNumber, LineContent
iLineCount = iLineCount + 1
ReDim Preserve Lines(1 To iLineCount)
Lines(iLineCount) = LineContent
Loop
Close TxtFileNumber
Open sTxtFile For Output As TxtFileNumber
For I = 1 To iLineCount ‘把数组写入文本
If bTrimRow Then Lines(I) = Trim(Lines(I))
If Not Lines(I) = “” Then Print #TxtFileNumber, Lines(I)
Next I
Close TxtFileNumber
If Err.Number <> 0 Then Err.Clear
On Error GoTo 0
End Sub


Public Sub TrimNotePad(ByVal sTxtFile As String, Optional ByVal bTrimRow As Variant = True) ‘对文本文件消除前后空行, 中间空行不管, bTrimRow 为真, 则行 ” ” 视为空行 “”
On Error Resume Next
Dim I As Integer, J As Integer
Dim Lines() As String
Dim LineContent As String
Dim iLineCount As Integer
Dim TxtFileNumber As Integer
TxtFileNumber = FreeFile
If Not FileExist(sTxtFile) Then Exit Sub
Open sTxtFile For Input As TxtFileNumber
Do While Not EOF(TxtFileNumber) ‘把文本读至数组
Line Input #TxtFileNumber, LineContent
iLineCount = iLineCount + 1
ReDim Preserve Lines(1 To iLineCount)
Lines(iLineCount) = LineContent
Loop
Close TxtFileNumber
Dim iBegin As Integer, iEnd As Integer
For I = 1 To iLineCount
If bTrimRow Then Lines(I) = Trim(Lines(I))
If Not Lines(I) = “” Then
iBegin = I
Exit For
End If
Next I
For I = iLineCount To 1 Step -1
If bTrimRow Then Lines(I) = Trim(Lines(I))
If Not Lines(I) = “” Then
iEnd = I
Exit For
End If
Next I
Open sTxtFile For Output As TxtFileNumber
For I = iBegin To iEnd ‘把数组写入文本
Print #TxtFileNumber, Lines(I)
Next I
Close TxtFileNumber
If Err.Number <> 0 Then Err.Clear
On Error GoTo 0
End Sub


Public Sub CleanNotePad(ByVal sTxtFile As String) ‘对文本文件消除重复行
On Error Resume Next
Dim I As Integer, J As Integer
Dim Lines() As String
Dim LineContent As String
Dim iLineCount As Integer
Dim TxtFileNumber As Integer
TxtFileNumber = FreeFile
If Not FileExist(sTxtFile) Then Exit Sub
Open sTxtFile For Input As TxtFileNumber
Do While Not EOF(TxtFileNumber) ‘把文本读至数组
Line Input #TxtFileNumber, LineContent
iLineCount = iLineCount + 1
ReDim Preserve Lines(1 To iLineCount)
Lines(iLineCount) = LineContent
Loop
Close TxtFileNumber
Call CleanUpArray(Lines) ‘去除重复元素
iLineCount = UBound(Lines) – LBound(Lines) + 1
Open sTxtFile For Output As TxtFileNumber
For I = 1 To iLineCount
Print #TxtFileNumber, Lines(I)
Next I
Close TxtFileNumber
If Err.Number <> 0 Then Err.Clear
On Error GoTo 0
End Sub


Public Sub SortNotePad(ByVal sTxtFile As String, ByVal bAscending As Boolean) ‘对文本文件按行排序
On Error Resume Next
Dim I As Integer, J As Integer
Dim Lines() As String
Dim LineContent As String
Dim iLineCount As Integer
Dim TxtFileNumber As Integer
TxtFileNumber = FreeFile
If Not FileExist(sTxtFile) Then Exit Sub
Open sTxtFile For Input As TxtFileNumber
Do While Not EOF(TxtFileNumber) ‘把文本读至数组
Line Input #TxtFileNumber, LineContent
iLineCount = iLineCount + 1
ReDim Preserve Lines(1 To iLineCount)
Lines(iLineCount) = LineContent
Loop
Close TxtFileNumber
If iLineCount = 0 Then Exit Sub ‘LBound 会出错
Dim iBest As Integer
Dim sBest As String
For I = 1 To iLineCount – 1 ‘对数组进行有序处理
iBest = I
sBest = Lines(I)
For J = I + 1 To iLineCount
If StrComp(Lines(J), sBest, vbTextCompare) < 0 Then sBest = Lines(J) iBest = J End If Next J Lines(iBest) = Lines(I) Lines(I) = sBest Next I Open sTxtFile For Output As TxtFileNumber If bAscending = True Then ‘把数组写入文本 ‘Ascending order For I = 1 To iLineCount Print #TxtFileNumber, Lines(I) Next I Else ‘Descending order For I = iLineCount To 1 Step -1 Print #TxtFileNumber, Lines(I) Next I End If Close TxtFileNumber If Err.Number <> 0 Then Err.Clear
On Error GoTo 0
End Sub


Public Sub ClearNotePad(ByVal sTxtFile As String) ‘保留文本文件但清空其内容
On Error Resume Next
Dim I As Integer, J As Integer
Dim Lines() As String
Dim TxtFileNumber As Integer
TxtFileNumber = FreeFile
Open sTxtFile For Output As TxtFileNumber
For I = LBound(Lines) To UBound(Lines) ‘把数组写入文本
Print #TxtFileNumber, Lines(I)
Next I
Close TxtFileNumber
If Err.Number <> 0 Then Err.Clear
On Error GoTo 0
End Sub

成吉思汗西征之四路围攻

1219年秋,蒙古大军进军到花剌子模边疆后,兵分四路先扫清外围,然后重点进攻新都撒马尔罕:第一路,由察合台、窝阔台率领,进攻讹答剌;第二路术赤(成吉思汗长子)率师攻取锡尔河畔诸城;第三军由阿剌黑率领,攻取忽毡(今土库曼斯坦阿什哈巴德)和别纳客忒(今乌兹别克斯坦塔什干南);第四路,由成吉思汗与托雷(成吉思汗四子)取中路,进攻不花剌城。花喇子模新都撒马尔罕在不花剌城以东,旧都玉龙杰赤城在不花剌城西北。摩诃末·苏丹驻扎在新都,母后秃儿罕哈墩驻旧都。成吉思汗首站任务是攻取讹答剌城等边界城市,然主攻不花剌城,切断新旧二都之间的联系,使其首尾不能相顾。

1219年9月,察合台、窝阔台的一路军开始攻打讹答剌城,征伐讹答剌城是蒙古军队和花喇子模军队的序幕之战,它的胜败对于双方的都有着具大的战略意义。

讹答剌城(位于哈萨克斯坦南哈萨克斯坦州奇姆肯特市阿雷思河和锡尔河交汇处)是花剌子模王国东方重镇。城墙和防御工事极为坚固,守军达4万人并集中储备了大量的战略物资。守将便是错杀蒙古商队的罪魁祸首亦纳勒术;副将是哈剌察,亦纳勒术心里清楚这场战争因自己而挑起,所以率领部众死守城池。

这场城池攻坚战非常惨烈,亦纳勒术抵档住了蒙古大军多次进攻,但毕竟已成瓮中之鳖在抵抗了5个月后,终于开始失去了信心、军民斗志开始涣散。副将哈尔察提出突围的意见,但是亦纳勒术清楚自己的处境成吉思汗是不会饶过自己只能决战到底,便放弃了突围的意见。

哈剌察见状决定自己率领1万骑兵突围,但是刚从苏菲哈纳门冲出便被蒙古大军活捉,蒙军乘机从苏菲哈纳门攻近城中与讹答剌城军民展开了巷战,1个月后讹答剌城被攻陷,守将亦纳勒术被活捉。

成吉思汗为了给死去的商队报仇,将融化的银水注入了他的眼睛和双耳,亦纳勒术惨死在刑场也算是死得其所吧。

第二路军,术赤率部沿锡尔河左岸进发,最先来到了昔格纳黑城(其遗址现名为苏纳克库尔干,在今哈萨克斯坦图门阿鲁克由站以北),术赤派一名叫哈散哈只的穆斯林去城中劝降,但是,城中百姓不听还将其打死。于是,术赤开始全面进攻,连续进攻七日攻陷昔格纳黑城,进城后杀死了所有居民。

而后,术赤来到毡的城。毡的城守将忽都鲁汗见蒙古军队兵临城下后却连夜弃城逃跑,经过沙漠地带,跑到玉龙杰赤去了。术赤见状仍然先采取了招降策略,毡的城居民最初还以坚守为主,但当蒙古军队成功占领城墙后却没有向蒙军进攻,由于他们没有抵抗,术赤赦免了他们,并委任了一个名叫阿里-火者的人为毡的城长官,管理城中军民。

第三路大军在阿剌黑率领下先攻下了别纳克忒城之后于1220年三月抵达了锡尔河畔的忽毡城(今塔吉克斯坦列尼纳巴德城,中亚古城之一。),忽毡城的守将是花剌子模著名的将领贴木儿灭里,他亲帅数千名精兵守护城池。忽毡城处在锡尔河中央,城堡高大、坚固,而且所处位置正好超出蒙古大军的弓箭和弩炮的射程之外。蒙军将领哈撒儿调来5万战俘从12公里外的山地运来石头填入锡尔河,企图逐步靠入城堡。贴木儿灭里造了十二艘密封的战船,船上蒙上厚厚的湿毡,外涂一层揉有醋的粘土,上面留有射箭口。这样无论蒙古军无论是用弓箭还是火攻都失去了作用,一次次进攻失利。

此时,术赤率领第三军一部及时赶到锡尔河两岸开始布置兵力,调来被俘的工匠连夜打造巨型弩炮和搭建浮桥,每个桥头以重兵把守,妄图将贴木儿灭里困死在锡尔河中。连续数月的围困也让贴木儿灭里感到了疲惫,再蒙军接下来的进攻中开始势渐不支。最后贴木儿灭里成功率领剩下的部众成功突围。

贴木儿灭里在忽毡城的英勇抵抗,是成吉思汗西征以来碰到的第一个顽强的将领,贴木儿灭里以1000多人抵挡住了多于自己数倍的蒙古大军的数次进攻,这说明花喇子模的军队中是不缺乏英雄气概的将领。

1220年三月,成吉思汗和四子拖雷所率领的第四路军从讹答剌城,经进昔格纳黑城和纳尔城,来到不花剌(今乌兹别克斯坦的布哈剌)城下。不花剌位于阿姆河东岸,位于花剌子模故都玉龙杰赤和新都撒马尔罕之间,是河中与波斯东西交通咽喉,是除撒马尔罕外最重要的城市,同是也是穆斯林世界的最大城市之一。街道四通八达,充足的水源和蜚声世界的手工艺制品给这里带来了富饶金额繁荣的景象。

成吉思汗大军赶到时,不花剌城由3万突厥人组成的雇佣军守护,最高长官是花喇子模著名将领怯失力汗。当怯失力汗拒绝投降后,蒙古军便发起了猛烈的进攻,城中的雇佣军将领乘夜率军突围逃出。蒙古军顺势攻入不花剌城,守将怯失力汗自杀殉国。但城中内堡中有骑兵400人仍然坚守不降,时常夜袭蒙古军队。成吉思汗在城堡周围架起投石器,向堡里投入巨堡石,打开缺口后,蒙古军冲入内堡,堡内军民无一幸免,全部斩杀。内堡肃清后,成吉思汗下令把城墙推到,把居民赶到城外的山坡上,然后放蒙古军队再次入城洗劫,城中青壮年被编入军队为随军进攻撒马尔罕。

雅阁架空线路辅助设计(WCAD)教学视频——插入杆塔

本教学视频的关键步骤提示如下:

1、激活线路图形文件(dwg),并进入插入杆塔页面;

2、点击进入调整,自动切换至杆塔参数页面;

3、选择新的杆塔,在线路图形文件(dwg)作图区域点选位置,即可看到插入后的效果;

4、点击结束调整。