广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 10340 个阅读者
 
<<   1   2   3  下页 >>(共 3 页)
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
a82613035
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x1 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x1
[Basic][求助] 如何在(记事本) AAA.TXT,里座标排序 (Q4)由大排小 (Q2)由小排大(Q3)由大排小 (Q1)由小排大
X13.50Y1096.00T210
X32.50Y13.00T210
X13.50Y42.00T210
X32.50Y38.00T210
X13.50Y1056.00T210
X13.50Y13.00T210
X523.50Y1096.00T210
X521.50Y36.00T210
X33.50Y1096.00T210
X53.50Y1096.00T210
X538.50Y1081.00T210
X13.50Y1076.00T210
X538 ..

访客只能看到部份内容,免费 加入会员 或由脸书 Google 可以看到全部内容



献花 x0 回到顶端 [楼 主] From:台湾中华电信 | Posted:2010-09-25 13:33 |
climbd25976 手机
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x10
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

这是什么...不明白你在说什么←新手 表情


献花 x0 回到顶端 [1 楼] From:香港有线宽频 | Posted:2010-09-27 21:32 |
a82613035
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x1 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

CLIMBD25976 不知如何称呼,我可以传资料给你,用讲的话可能你听不懂我再说什么,可以吗?我的信箱是
sm.don@msa.hinet.net


献花 x0 回到顶端 [2 楼] From:台湾中华电信 | Posted:2010-09-28 12:35 |
ebolaman 手机 会员卡
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖

级别: 副版主 该用户目前不上站
版区: 程式设计
推文 x38 鲜花 x458
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片


大致上了解,这是第二次修改

不过还是搞不懂到底要依照何种标准来排序

假如要修改,只要调 CmpPos
函数里的东西即可





Form1:

复制程式
Option Explicit

Private Sub Command1_Click()

Dim S As String
Dim Arr() As String
Dim i As Long, k As Long, XYInd As Integer
Dim B As Boolean
Dim CmpMethod1 As Integer, CmpMethod2 As Integer


'------------ Ini. Var. ------------

CmpMethod1 = IIf(Option1(0).Value = True, 1, 0) 'Sort By Y or not
CmpMethod2 = IIf(Check1.Value = 1, 2, 1) 'Increasing or not

'--------- Put Datas Into Array -----------
S = Trim(Text1.Text)

Do While Right(S, 2) = vbNewLine
  S = Left(S, Len(S) - 2)
Loop

Arr = Split(S, vbNewLine)

k = UBound(Arr)
ReDim Pos(k, 1) As Double

For i = 0 To k
  Pos(i, 0) = GetUserVal(Arr(i), 0) 'X
  Pos(i, 1) = GetUserVal(Arr(i), 1) 'Y
Next i

'-------- Sort ----------

'Bubble Sort

For XYInd = 0 To 1
    Do
        i = 0
        B = False
        Do
          If CmpPos(Pos, i, CmpMethod1, CmpMethod2, XYInd) Then
              ExcgPos Pos, i
              B = True
          End If
            i = i + 1
        Loop While i < k
    Loop While B
Next XYInd

'---------- Show Result ---------

S = ""
For i = 0 To k
  S = S & "(" & Pos(i, 0) & ", " & Pos(i, 1) & ")" & vbNewLine
Next i
  Text2.Text = S

End Sub

Public Function GetUserVal(ByVal S As String, ByVal Typ As Byte) As Double

Dim m As Long, m2 As Long

  'Kill Str T...
  m = InStrRev(UCase(S), "T")
  If m <> 0 Then S = Left(S, m - 1)

'''

m = InStr(1, UCase(S), "X")
m2 = InStr(m + 1, UCase(S), "Y")

GetUserVal = IIf(Typ = 0, Mid(S, m + 1, m2 - m - 1), Right(S, Len(S) - m2))

End Function

Public Sub ExcgPos(ByRef P() As Double, ByVal i As Long) 'Exchange Two Pos.
  
  Dim tempk As Double, tempk2 As Double
  
  tempk = P(i, 0): tempk2 = P(i, 1)
  P(i, 0) = P(i + 1, 0): P(i, 1) = P(i + 1, 1)
  P(i + 1, 0) = tempk: P(i + 1, 1) = tempk2
  
End Sub

Public Function CmpPos(ByRef P() As Double, ByVal i As Long, ByVal Mtd1 As Integer, ByVal Mtd2 As Integer, ByVal Ind As Integer) As Boolean

Dim FixedMtd As Integer

If Ind = 0 Then
  If Mtd2 = 2 Then
    CmpPos = (P(i, Mtd1) > P(i + 1, Mtd1))
  Else
    CmpPos = (P(i, Mtd1) < P(i + 1, Mtd1))
  End If
Else
    
    FixedMtd = Mtd1
    Mtd1 = CByte(Not CBool(Mtd1 * 255)) / 255 'Reverse 0 & 1

  If Mtd2 = 2 Then
    CmpPos = (P(i, Mtd1) > P(i + 1, Mtd1)) And (P(i, FixedMtd) = P(i + 1, FixedMtd))
  Else
    CmpPos = (P(i, Mtd1) < P(i + 1, Mtd1)) And (P(i, FixedMtd) = P(i + 1, FixedMtd))
  End If
End If

End Function




本帖包含附件
zip Seq_XY And Sort.rar   (2022-06-09 14:16 / 6 KB)   下载次数:9


[ 此文章被ebolaman在2010-09-30 04:33重新编辑 ]

此文章被评分,最近评分记录
财富:50 (by 三仙) | 理由: ^^ 因为您的参与,让程式设计更容易!!


My BOINC stats :

献花 x1 回到顶端 [3 楼] From:台湾新世纪资通 | Posted:2010-09-28 18:29 |
a82613035
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x1 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

ebolaman你好 :
          我有一个 长( X )552. 宽(Y)1109. 座标分为四个角落,四个角设定为Q1,Q2,Q3,Q4 为四个角落
Q1为 (X0. Y0.) , Q2为(X552. Y0.) , Q3为(X0. Y1109.) , Q4为( X552. Y1109.)
1: 首先开启 入径C:\ XXX \AAA.TXT (记事本),把( T210 或是T313或是T235或是T304等)无排序座标重新排列座标,把四个角落Q1,Q2,Q3,Q4,由外面排到里面,例如座标分布再Q4位置座标外面排到里面,座标分布再Q2位置座标外面排到里面,座标分布再Q3位置座标外面排到里面,座标分布再Q1位置座标外面排到里面,由Q4角落排到---Q2角落排到--- Q3角落排到--- Q1角落排到
下面是座标无排序
(552.1109.)
X10.00Y804.50T304
X10.00Y554.50T304
X10.00Y304.50T304
X542.00Y804.50T235
X542.00Y554.50T235
X542.00Y304.50T235
X451.00Y384.50T313(Q2)
X451.00Y724.50T313(Q4)
X101.00Y724.50T313(Q3)
X101.00Y384.50T313(Q1)
X3.50Y1041.27T210(Q3)
X13.50Y1056.00T210(Q3)
X13.50Y1076.00T210(Q3)
X53.50Y1096.00T210(Q3)
X33.50Y1096.00T210(Q3)
X523.50Y1096.00T210(Q4)
X538.50Y1081.00T210(Q4)
X521.50Y36.00T210(Q2)
X538.50Y36.00T210(Q2)
X49.50Y13.00T210(Q1)
X32.50Y13.00T210(Q1)
X32.50Y38.00T210(Q1)
X13.50Y42.00T210(Q1)
X538.50Y13.00T210(Q2)
X538.50Y1096.00T210(Q4)
X13.50Y13.00T210(Q1)
X13.50Y1096.00T210(Q3)
下面是重新排列座标
(552.1109.)
X10.00Y804.50T304
X10.00Y554.50T304
X10.00Y304.50T304
X542.00Y804.50T235
X542.00Y554.50T235
X542.00Y304.50T235
X451.00Y724.50T313(Q4)
X451.00Y384.50T313(Q2)
X101.00Y724.50T313(Q3)
X101.00Y384.50T313(Q1)
X538.50Y1096.00T210(Q4)
X538.50Y1081.00T210(Q4)
X523.50Y1096.00T210(Q4)
X538.50Y13.00T210(Q2)
X538.50Y36.00T210(Q2)
X521.50Y36.00T210(Q2)
X13.50Y1096.00T210(Q3)
X33.50Y1096.00T210(Q3)
X53.50Y1096.00T210(Q3)
X13.50Y1076.00T210(Q3)
X13.50Y1056.00T210(Q3)
X3.50Y1041.27T210(Q3)
X13.50Y13.00T210(Q1)
X13.50Y42.00T210(Q1)
X32.50Y13.00T210(Q1)
X32.50Y38.00T210(Q1)
X49.50Y13.00T210(Q1)
重新排好座标,覆盖AAA.TXT,里面,小弟构想就是这样


献花 x0 回到顶端 [4 楼] From:台湾中华电信 | Posted:2010-09-30 07:46 |
ebolaman 手机 会员卡
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖

级别: 副版主 该用户目前不上站
版区: 程式设计
推文 x38 鲜花 x458
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用 a82613035 于 2010-09-30 07:46 发表的 : 到引言文
ebolaman你好 :
          我有一个 长( X )552. 宽(Y)1109. 座标分为四个角落,四个角设定为Q1,Q2,Q3,Q4 为四个角落
Q1为 (X0. Y0.) , Q2为(X552. Y0.) , Q3为(X0. Y1109.) , Q4为( X552. Y1109.)
1: 首先开启 入径C:\ XXX \AAA.TXT (记事本),把( T210 或是T313或是T235或是T304等)无排序座标重新排列座标,把四个角落Q1,Q2,Q3,Q4,由外面排到里面,例如座标分布再Q4位置座标外面排到里面,座标分布再Q2位置座标外面排到里面,座标分布再Q3位置座标外面排到里面,座标分布再Q1位置座标外面排到里面,由Q4角落排到---Q2角落排到--- Q3角落排到--- Q1角落排到
下面是座标无排序
.......


所以我先归纳一下规则:

Q1 : Y 主递增、X其次
Q2 : Y 主递增、X接着递减

Q3 : X 主递增、Y接着递减
Q4 : Y 主递减、X其次



是吗?

我另做了一个图来展示以上意义:





不过有几点我搞不太清楚:

1. 真的是照以上规则吗? 不是照与某点距离?
2. 字串后面的 TXXX 是做什么的
3. 输出格式必须保持与原本相同吗? 例如: X123Y345T678

4. 输入来源有 Q1, Q2... 等字样吗?


归纳出以上规则后,相信会比较好了解排序之最终目的

我已把大致上的 VB 程式码打好了,或许你先行修改看看


[ 此文章被ebolaman在2010-09-30 20:20重新编辑 ]


My BOINC stats :

献花 x0 回到顶端 [5 楼] From:台湾新世纪资通 | Posted:2010-09-30 20:15 |
a82613035
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x1 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

1:照你图上规定走的路线排序座标,不过Q3方向可以改走Y方向,另外Q1,Q2,Q3,Q4 也可以走X方向
2:字串后面的 TXXX 是做什么的,是模具号码,我工作性质是冲孔人员,每天对着电脑划图
3:输出格式必须保持与原本相同,是的X123.Y345.T678
4:输入来源有 Q1, Q2... 等字样吗?是没有


献花 x0 回到顶端 [6 楼] From:台湾中华电信 | Posted:2010-09-30 21:09 |
a82613035
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x1 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

补充一下
1:再AAA.TXT资料里,第一行是空行,
                        第二行是 (X552.Y1109.), " ) " 后面有加G92XXXXXXX
第三行以后都是 X10.00Y804.50T304 ,TXXX后面有( XXX )叙述说明,例如(3.1) 或是 (FAN*0.)等等,不一定每个TXXX后面都有叙述说明,
直到最后结束有个G50
例如:
X10.00Y304.50T304
X542.00Y804.50T235
X542.00Y554.50T235
.
.
.
.
X32.50Y38.00T210
G50

G50下一行是空行


献花 x0 回到顶端 [7 楼] From:台湾中华电信 | Posted:2010-10-01 07:28 |
ebolaman 手机 会员卡
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖

级别: 副版主 该用户目前不上站
版区: 程式设计
推文 x38 鲜花 x458
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用 a82613035 于 2010-10-01 07:28 发表的 : 到引言文
补充一下
1:再AAA.TXT资料里,第一行是空行,
                        第二行是 (X552.Y1109.), " ) " 后面有加G92XXXXXXX
第三行以后都是 X10.00Y804.50T304 ,TXXX后面有( XXX )叙述说明,例如(3.1) 或是 (FAN*0.)等等,不一定每个TXXX后面都有叙述说明,
直到最后结束有个G50
例如:
X10.00Y304.50T304
X542.00Y804.50T235
X542.00Y554.50T235
.
.
.
.
X32.50Y38.00T210
G50

G50下一行是空行


那么,AAA.TXT 里面就是从  最前面的 空行G50 下一行空行 为止算一个群组,所以有很多群组需要排序啰?

不过我仍然无法掌控到 排序的规则



目前我的理解是这样:X, Y 个轴 分别为主、次递增或递减

但仍有一个麻烦,就是在这个群组里无法区分 Q1~Q4 这四个区块

是以模组长宽 (X552.Y1109.)  的中心点? 抑或是 每个资料的X 与 Y 取平均值? 还是要看离散度? 相关系数?...

抓出这个点后要以这个点为中心,往南北与东西向各画出分隔线,然后将分隔的四块分为 Q1~Q4 吗?


至于排序,机器只能以直线走吗? 可以走斜线吗? 假如排序依照最短路径来走行吗?

因为我对冲孔不懂,在着手进行前还是要把规则搞清楚才行



我画了一个图展示我认为的 AAA.txt 规则:



My BOINC stats :

献花 x0 回到顶端 [8 楼] From:台湾台湾宽频 | Posted:2010-10-01 19:01 |
a82613035
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x1 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

1: (X552.Y1109.)这是铁板长度,不是模具长度
2: AAA.TXT是冲孔程式,是让冲孔机器读座标去冲孔 3: T210 才是模具号码
4: 我解释一下,为什么要排序座标,T210这把模具是
    20X20正方形,假如有四个座标 第一座标是X10.Y10.T210 第二座标是X30.Y10.T210第三座标是X10.Y30.T210第四座标是X30.Y30.T210,如果先排
X30.Y10.T210
X10.Y30.T210
X30.Y30.T210
X10.Y10.T210
最后X10.Y10.T210座标,铁板就会掉料,所以才要排序座标,不要让铁板掉料
5:冲孔机器,是依据你写的座标去冲孔
6:AAA.TXT是一条程式,G50是结束程式
7:机器可以直线走也可以走斜线,依据你写的座标去冲孔,排序依照最短路径来走行
8:(X552.Y1109.)这是铁板长度,X552.及Y1109.这是一个变数,不是每条程式都不会一样,
9:我有一个 铁板长度,长( X )552. 宽(Y)1109. 座标分为四个角落,四个角设定为Q1,Q2,Q3,Q4 为四个角落
Q1为 (X0. Y0.) , Q2为(X552. Y0.) , Q3为(X0. Y1109.) , Q4为( X552. Y1109.)


献花 x0 回到顶端 [9 楼] From:台湾威宝电信 | Posted:2010-10-01 22:54 |

<<   1   2   3  下页 >>(共 3 页)
首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.087045 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言