rmb求購pcb排版源碼 ( 积分: 1 )

  • 主题发起人 主题发起人 wcl-2001
  • 开始时间 开始时间
W

wcl-2001

Unregistered / Unconfirmed
GUEST, unregistred user!
rmb求購pcb排版源碼,要求:
1.價格面議;
2.無誠意免談;
3.能提供demo程式試用(繁體更佳);
e-mail:wcl-2001@tom.com
 
louqing_1@163.com,
 
to louqing_2:
能提供demo程式試用(繁體更佳)嗎?
如果可以發到我的e-mail
 
我找个时间发给你,
 
昨天已发,有没有收到?请在这里回我
 
to louqing_2:
我們公司已經跟你聯繫了
 
還有人有pcb排版源碼賣的嗎?
 
更改后的内容为如下:
1.更改此单元内容
unit MainUnit1;
.........

//判断新的PNL尺寸是不是不可以改变
function TMainForm.JuDgePNLSize231(事件更改
....
fr3:=true;
for i:=0 to vpnl do
begin
//if value.DrawPnl.PL-ReultInfo3[ArrayNumber2].DrawPnl.PL<>0 then
//更改
if (value.DrawPnl.PL - ReultInfo3[ArrayNumber2].DrawPnl.PL <> 0)
or (value.DrawPnl.PW - ReultInfo3[ArrayNumber2].DrawPnl.PW <> 0) then
//-----------
begin
fr1:=(value.DrawPnl.PL-ReultInfo3[ArrayNumber2].DrawPnl.PL+value.DrawPnl.PLS1+value.DrawPnl.PLS2)>=0;
if fr1 then
.....



2.更改此单元内容
unit Unit1DataRecord;
...
//排第二区的内容
function TCutManyPNL1.Set2ArrayToPanl_2(事件更改
......
if vttype1 =0 then
begin
valueSetSize3 := vMySetSize3[value3] ;
valueSetSpace3 := vMySetSpace3 ;
end
else if vttype1 = 1 then
begin
valueSetSize3.SetLong := vMySetSize3[value3].SetWidth ;
//valueSetSize3.SetWidth := vMySetSize3[value3].SetWidth ;
//改2007-8-22
valueSetSize3.SetWidth := vMySetSize3[value3].SetLong ;
//------------
valueSetSize3.Area := vMySetSize3[value3].Area ;

valueSetSpace3.SetLongSpace := vMySetSpace3.SetWidthSpace ;
valueSetSpace3.SetWidthSpace := vMySetSpace3.SetLongSpace ;
end ;
.....
if vttype1 =0 then
begin
valueSetSize3 := vMySetSize3[value3] ;
valueSetSpace3 := vMySetSpace3 ;
end
else if vttype1 = 1 then
begin
valueSetSize3.SetLong := vMySetSize3[value3].SetWidth ;

//valueSetSize3.SetWidth := vMySetSize3[value3].SetWidth ;
//更改2007-7-22
valueSetSize3.SetWidth := vMySetSize3[value3].SetLong ;

valueSetSize3.Area := vMySetSize3[value3].Area ;

valueSetSpace3.SetLongSpace := vMySetSpace3.SetWidthSpace ;
valueSetSpace3.SetWidthSpace := vMySetSpace3.SetLongSpace ;
end ;

.......
function TCutManyPNL1.CheckPnlSize(const 事件更改
........
//新增2007-8-16
//------------------- 数量是不是与输入的相符
if vCheckSetNumber2 then
begin
if vMySetNumber3 = 2 then
begin


//nsnv1[0] := vPNLSize5.MySet[0].SetSize.SetNumber /(vPNLSize5.MySet[0].SetSize.SetNumber + vPNLSize5.MySet[1].SetSize.SetNumber);
//nsnv1[1] := vPNLSize5.MySet[1].SetSize.SetNumber /(vPNLSize5.MySet[0].SetSize.SetNumber +vPNLSize5.MySet[1].SetSize.SetNumber);

nsnv1[0] := vMySetSize3[0].SetNumber / (vMySetSize3[0].SetNumber + vMySetSize3[1].SetNumber) ;
nsnv1[1] := vMySetSize3[1].SetNumber / (vMySetSize3[0].SetNumber + vMySetSize3[1].SetNumber) ;

nsnv2[0] := nsn1[0] / (nsn1[0] + nsn1[1]);
nsnv2[1] := nsn1[1] / (nsn1[0] + nsn1[1]);

if (nsnv1[0] <> nsnv2[0]) or (nsnv1[1] <> nsnv2[1]) then
exit;

IF ((vPNLSize5.Long =396) AND (vPNLSize5.Width=390))
OR (((vPNLSize5.Long =390) AND (vPNLSize5.Width=396))) THEN
if (nsnv1[0] = nsnv2[0]) AND (nsnv1[1] = nsnv2[1]) then
SHOWMESSAGE('');


end
......
 
IF ((vPNLSize5.Long =396) AND (vPNLSize5.Width=390))
OR (((vPNLSize5.Long =390) AND (vPNLSize5.Width=396))) THEN
if (nsnv1[0] = nsnv2[0]) AND (nsnv1[1] = nsnv2[1]) then
SHOWMESSAGE('');
这个不要,我测试用的
 
error!! not any change code

//排第二区的内容
function TCutManyPNL1.Set2ArrayToPanl_2(事件更改
......
if vttype1 =0 then
begin
valueSetSize3 := vMySetSize3[value3] ;
valueSetSpace3 := vMySetSpace3 ;
end
else if vttype1 = 1 then
begin
valueSetSize3.SetLong := vMySetSize3[value3].SetWidth ;
//valueSetSize3.SetWidth := vMySetSize3[value3].SetWidth ;
//改2007-8-22
valueSetSize3.SetWidth := vMySetSize3[value3].SetLong ;
//------------
valueSetSize3.Area := vMySetSize3[value3].Area ;

valueSetSpace3.SetLongSpace := vMySetSpace3.SetWidthSpace ;
valueSetSpace3.SetWidthSpace := vMySetSpace3.SetLongSpace ;
end ;
.....
if vttype1 =0 then
begin
valueSetSize3 := vMySetSize3[value3] ;
valueSetSpace3 := vMySetSpace3 ;
end
else if vttype1 = 1 then
begin
valueSetSize3.SetLong := vMySetSize3[value3].SetWidth ;

//valueSetSize3.SetWidth := vMySetSize3[value3].SetWidth ;
//更改2007-7-22
valueSetSize3.SetWidth := vMySetSize3[value3].SetLong ;

valueSetSize3.Area := vMySetSize3[value3].Area ;

valueSetSpace3.SetLongSpace := vMySetSpace3.SetWidthSpace ;
valueSetSpace3.SetWidthSpace := vMySetSpace3.SetLongSpace ;
end ;
 
注意到没有:
以前是这样了
valueSetSize3.SetLong := vMySetSize3[value3].SetWidth ;
valueSetSize3.SetWidth := vMySetSize3[value3].SetWidth ;

vMySetSize3[value3].SetWidth 两行都是一样的,
而改后就成了这样了了,
valueSetSize3.SetLong := vMySetSize3[value3].SetWidth ;
valueSetSize3.SetWidth := vMySetSize3[value3].SetLong ;
只是将第二行的vMySetSize3[value3].SetWidth 改为vMySetSize3[value3].SetLong 了,其它的没有变动,这个改动是对的,

还有你改成这样的后是不是没有错误了?
 
在function TCutManyPNL1.Set2ArrayToPanl_2这个事件中,有两处
valueSetSize3.SetLong := vMySetSize3[value3].SetWidth ;
valueSetSize3.SetWidth := vMySetSize3[value3].SetWidth ;
都要更改成新的
 
第一片
交货尺寸长 40
交货尺寸宽 20
交货数量 100

第二片
交货尺寸长 50
交货尺寸宽 30
交货数量 100

第三片
交货尺寸长 60
交货尺寸宽 40
交货数量 100


第四片
交货尺寸长 70
交货尺寸宽 50
交货数量 100

间距 2
边距 2

大料 长 333 宽 333

排出之结果

-------------------------------------
Pnl排版数据:
长:324=4 + 3 X ( 40 + 2 ) + 3 X ( 30 + 2 )
宽:322=4 + 12 X ( 20 + 2 ) + 6 X ( 50 + 2 )
排列方式(1区): 长:40 间距:2 长个数:3 宽:20 宽间距:2 宽个数:12
排列方式(2区): 长:30 间距:2 长个数:3 宽:50 宽间距:2 宽个数:1
排列方式(3区): 长:30 间距:2 长个数:6 宽:50 宽间距:2 宽个数:6
排列方式(4区): 长:0 间距:0 长个数:0 宽:0 宽间距:0 宽个数:0大料排版数据:
大料长: 333
大料宽: 333
一区 长: 322 X 1 宽: 324 X 1
二区 长: 324 X 0 宽: 322 X 0
三区 长: 324 X 0 宽: 322 X 0
利用率: 0.7873

memo 前两行 长宽 都是错的
 
你可以试试 间距 与 边距 不要用一样的数字 , 不要用 1
就会出错
而且 汇出之结果 与 前两行的数字 都无法一致
 
以上的结过 还漏了一些数据

PNL 长 宽 上限 = 400
PNL 长 宽 下限 = 20
 
长:332=2 + 1 X ( 40 + 2 ) + 9 X ( 30 + 2 )
宽:332=2 + 3 X ( 20 + 2 ) + 12 X ( 20 + 2 )
这个是我排出的结果,说明为什么332 <>2 + 1 X ( 40 + 2 ) + 9 X ( 30 + 2 )
其它应是这样的:长 = 边距*2+个数1*长+个数1*间距+个数2*长+(个数2 - 1)*间距,
也就是说这个显示的内容会加多一个间距,这个是没有问题的,对的显示方式为:

长:332=2 + 1 X ( 40 + 2 ) + 9 X ( 30 + 2 ) - 2
宽:332=2 + 3 X ( 20 + 2 ) + 12 X ( 20 + 2 ) - 2
其中 - 2 为多加的一个间距工,
你可以从显示的图形中看出来.
 
Memo中显示的内容可以会有问题,最好的方式还是标注到所画的图形中,你们可以改一下的,
当计算出的长宽不相等时,相长小于宽的值时,就会将里面的内容转90度来画图,这样就会造成MEMO中显示的内容与所画的图形不相符了,
如果要改你只要改
Unit1DataRecord 单元中的
function TDrawManyPNL1.DrawPnl2(....的内容
 
unit Unit1DataRecord;
更改此单元的此函数中的内容如下
function TDrawManyPNL1.DrawPnl2(CONST ValuePNLSize9:TMyPNLSize9;
....
vstr1 := 'Pnl排版数据: '; //注意此句开始后就开始更改,注意变化
if VCHANGE2 then
begin
vstr1 :=vstr1 + #13#10 + '长:' + currtostr(VPNLSize3.Long) + '=' +currtostr(VPNLSize3.MySet[0].StartX) +' + '+ INTTOSTR(VPNLSize3.MySet[0].NumberX)
+ ' X ( '+currtostr(VPNLSize3.MySet[0].SetSize.SetLong) +' + '+ currtostr(VPNLSize3.MySet[0].SetSpace.SetLongSpace)+' )'
+' + '+ INTTOSTR(VPNLSize3.MySet[2].NumberX)
+ ' X ( '+currtostr(VPNLSize3.MySet[2].SetSize.SetLong) +' + '+ currtostr(VPNLSize3.MySet[2].SetSpace.SetLongSpace)+' )';
end
else
begin
vstr1 :=vstr1 + #13#10 + '长:' + currtostr(VPNLSize3.Long) + '=' +currtostr(VPNLSize3.MySet[0].StartX) +' + '+ INTTOSTR(VPNLSize3.MySet[0].NumberX)
+ ' X ( '+currtostr(VPNLSize3.MySet[0].SetSize.SetLong) +' + '+ currtostr(VPNLSize3.MySet[0].SetSpace.SetLongSpace)+' )'
+' + '+ INTTOSTR(VPNLSize3.MySet[1].NumberX)
+ ' X ( '+currtostr(VPNLSize3.MySet[1].SetSize.SetLong) +' + '+ currtostr(VPNLSize3.MySet[1].SetSpace.SetLongSpace)+' )';
end ;

//VImage1.Canvas.TextOut(0,0,s);
if VCHANGE2 then
begin
vstr1 :=vstr1 + #13#10 + '宽:'+ currtostr(VPNLSize3.Width) + '=' +currtostr(VPNLSize3.MySet[0].StartY) +' + '+ INTTOSTR(VPNLSize3.MySet[0].NumberY)
+ ' X ( '+currtostr(VPNLSize3.MySet[0].SetSize.SetWidth) +' + '+ currtostr(VPNLSize3.MySet[0].SetSpace.SetWidthSpace)+' )'
+' + '+ INTTOSTR(VPNLSize3.MySet[1].NumberY)
+ ' X ( '+currtostr(VPNLSize3.MySet[1].SetSize.SetWidth) +' + '+ currtostr(VPNLSize3.MySet[1].SetSpace.SetWidthSpace)+' )';
//VImage1.Canvas.TextOut(0,text_height1,s) ;
end
else
begin
vstr1 :=vstr1 + #13#10 + '宽:'+ currtostr(VPNLSize3.Width) + '=' +currtostr(VPNLSize3.MySet[0].StartY) +' + '+ INTTOSTR(VPNLSize3.MySet[0].NumberY)
+ ' X ( '+currtostr(VPNLSize3.MySet[0].SetSize.SetWidth) +' + '+ currtostr(VPNLSize3.MySet[0].SetSpace.SetWidthSpace)+' )'
+' + '+ INTTOSTR(VPNLSize3.MySet[2].NumberY)
+ ' X ( '+currtostr(VPNLSize3.MySet[2].SetSize.SetWidth) +' + '+ currtostr(VPNLSize3.MySet[2].SetSpace.SetWidthSpace)+' )';
end ;
//注意更改到此处结束,下一句为以前存在的语句
vstr1 :=vstr1 + #13#10 + '排列方式(1区):'+ ' 长:' + currtostr(VPNLSize3.MySet[0].SetSize.SetLong) +
' 间距:' + currtostr(VPNLSize3.MySet[0].SetSpace.SetLongSpace) +
' 长个数:' + inttostr(VPNLSize3.MySet[0].NumberX) +
' 宽:' + currtostr(VPNLSize3.MySet[0].SetSize.SetWidth) +
' 宽间距:' + currtostr(VPNLSize3.MySet[0].SetSpace.SetWidthSpace) +
' 宽个数:' + inttostr(VPNLSize3.MySet[0].NumberY) ;
.....
.....
只要更改这个地方就可以了,其它不用更改,如有什么不明白的地方在这里发信息给我,
 
后退
顶部