全部代码

 

import json
import os
import string#只转码可打印字符
import gzip
#import brotli
#import zlib
import urllib.request
from urllib.parse import unquote#查找get中文
import ssl#有的网站提示证书错误
context = ssl._create_unverified_context()

#zhengwen=re.compile(b'<[^a(img)][^>]*>|<script[^~]+/script>')
# ,'Connection' : 'keep-alive' ,'Cache-Control': 'max-age=0' ,'Host': 'm.weibo.cn'

hd2=[{ "Host": "wx2.sinaimg.cn"
          ,"User-Agent":" Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0"
          ,"Accept": "image/webp,*/*"
          ,"Accept-Language": "en-US,en;q=0.5"
          ,"Accept-Encoding": "gzip, deflate, br"
          ,"Referer": "https://m.weibo.cn/u/1695259964"
          ,"Connection": "keep-alive"
        },
        { "Host": "wx1.sinaimg.cn"
          ,"User-Agent":" Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0"
          ,"Accept": "image/webp,*/*"
          ,"Accept-Language": "en-US,en;q=0.5"
          ,"Accept-Encoding": "gzip, deflate, br"
          ,"Referer": "https://m.weibo.cn/u/1695259964"
          ,"Connection": "keep-alive"
        },

        ]
hd1={ "Host": "m.weibo.cn"
          ,"User-Agent":" Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0"
          ,"Accept": "image/webp,*/*"
          ,"Accept-Language": "en-US,en;q=0.5"
          ,"Accept-Encoding": "gzip, deflate, br"
          ,"Referer": "https://m.weibo.cn/u/1695259964"
          ,"Connection": "keep-alive"
          ,"Upgrade-Insecure-Requests": 1
          ,"Cookie":"SUB=_2AkMe_rSif8NxqwFRm_gSzG3rb4t0wg_EieKookV5JRM3HRl-yT9yqlVStRB6NX6aTWOgoXFgad_YY9K3VeA2lm0Yo0Xo; SUBP=0033WrSXqPxfM72-Ws9jqgMF55529P9D9Wh8REh6DRfGg77YFWD8cEbD; WEIBOCN_FROM=1110006030; MLOGIN=0; _T_WM=65928272184; XSRF-TOKEN=1ca7b8; M_WEIBOCN_PARAMS=luicode%3D10000011%26launchid%3D10000360-page_H5%26lfid%3D1005057390336468%26oid%3D5285335231890700%26fid%3D1005055371314996%26uicode%3D10000011"
        }
def cuntu(urlq,nm):
    try:
        for hd in hd2:
            req=urllib.request.Request(urllib.parse.quote(urlq,safe=string.printable),None,hd)
            response = urllib.request.urlopen(req)
    except:
        print('图错误')
        return
    body=response.read()   
    f=open(nm,'wb')
    f.write(body)
    f.close()

def baocun(urlq):
    if not(urlq):return
    if '#'in urlq:
        urlq=urlq[:urlq.find('#')]
    ind=urlq.rfind('/')
    nm=urlq[ind+1:]
    if os.path.exists(nm):
        print('文件存在')
        return 
    else:
        os.mkdir(nm)
    ind=nm.find('?')
    if ind>0:
        nm=nm[:ind]

    req=urllib.request.Request(urllib.parse.quote(urlq,safe=string.printable),None,hd1)
    response = urllib.request.urlopen(req)
    yasuo=response.headers.get('Content-Encoding')
    if  yasuo:
        if 'gzip'==yasuo:
            body=gzip.decompress(response.read())   

    f=open(nm+'/%s.html'%nm,'wb')
    f.write(body)
    f.close()
    wangzi(body,nm)

def wangzi(aa,nm):
    txtq=aa.find(b'"text":')+len("text")+3
    txth=aa.find(b'"textLength"',txtq)
    f=open(nm+'/text.txt','wb')
    f.write(aa[txtq:txth].replace(b'<br />',b'\n'))
    f.close()
    picq=aa.find(b'"pic_ids":',txth)+len("pic_ids")+3
    pich=aa.find(b']',picq)+1
    b=json.loads(aa[picq:pich])
    ind=1
    for i in b:
        cuntu('https://wx2.sinaimg.cn/mw2000/%s.jpg'%i,nm+'/%s.jpg'%ind)
        ind+=1


while True:
    baocun(input())
    print('done')

 biaozhusankai

def biaozugaichen():
result = ed.GetSelection()#xwz)
if (result.Status == PromptStatus.OK):
for objectid in result.Value.GetObjectIds():
obj1 = objectid.GetObject( OpenMode.ForWrite)
aa=obj1.Measurement#obj1.Dimlfac*
#jianju=12.5#定义间距
#gesu=round(aa/jianju)#求个数
gesu=2#定义个数
jianju=round(aa/gesu,1)#求间距

obj1.DimensionText='%s*%g'%(gesu,jianju)
#ed.WriteMessage('%s*%s'%(gesu,jianju))#Measurement
ed.WriteMessage(str(obj1.Dimlfac))

def main(SC):
doc,ed,db,t=SC
#d=[]
result = ed.GetSelection()#xwz)
if (result.Status == PromptStatus.OK):
dx= result.Value.GetObjectIds()
obj1=dx[0].GetObject(0)#第一个对象,看是x或y方向
p1=obj1.XLine1Point
p2=obj1.XLine2Point
if abs(p1.Y-p2.Y)>1:#y的差不为0,就是竖着标的
hen=False
pyjl=obj1.TextPosition.X+2*(obj1.DimLinePoint.X-obj1.TextPosition.X)
else:#横着标
hen=True
pyjl=obj1.TextPosition.Y+2*(obj1.DimLinePoint.Y-obj1.TextPosition.Y)
ind=0
for objectid in dx: #不排序 可能出问题
ind+=1
#obj1 = objectid.GetObject(0)
obj1 = objectid.GetObject( OpenMode.ForWrite)

#ed.WriteMessage(str(obj1.TextPosition)+str(obj1.DimLinePoint)+str(obj1.XLine1Point)+str(obj1.XLine2Point))

aa=obj1.DimensionText
obj1.UpgradeOpen()
if aa:#每个都改宽度
obj1.DimensionText='{\W%g;%s}'%(scalefactor,aa)
else:
obj1.DimensionText='{\W%g;<>}'%scalefactor
if ind&1:#间隔移动
po=obj1.TextPosition
if hen:
pn=Point3d(po.X,pyjl,0)
else:
#po.X=pyjl
pn=Point3d(pyjl,po.Y,0)
obj1.TextPosition=pn
t.Commit()

labiaogegaodu

def movewd(ed,p1,p2,jl):
#*********************只能选外框必须多段线和直线************
#result = ed.SelectWindow(p1,p2)#容易多选
p=Point3dCollection()
p.Add(p1)
p.Add(Point3d(p1.X,p2.Y,0))
p.Add(p2)
p.Add(Point3d(p2.X,p1.Y,0))
result = ed.SelectWindowPolygon(p)#SelectWindowPolygon
if (result.Status != PromptStatus.OK):
return

ydvec=Vector3d(0,jl,0)
ydmt=Matrix3d.Displacement(ydvec)
for objectid in result.Value.GetObjectIds():
obj1 = objectid.GetObject(OpenMode.ForWrite)
obj1.TransformBy(ydmt)


def main(SC):
doc,ed,db,t=SC
result = ed.GetSelection(SelectionFilter(Array[TypedValue]([TypedValue(-4,'<OR'),TypedValue(0,'LINE'),TypedValue(0,'LWPOLYLINE'),TypedValue(-4,'OR>')])))
if (result.Status != PromptStatus.OK):
return
data=[]
for objectid in result.Value.GetObjectIds():
obj1 = objectid.GetObject(0)#OpenMode.ForWrite)
if isinstance(obj1,Polyline):
n=obj1
wz1=obj1.GetPoint2dAt(0)
wz2=obj1.GetPoint2dAt(2)
if wz1.X>wz2.X:
maxx=wz1.X
minx=wz2.X
else:
maxx=wz2.X
minx=wz1.X
if wz1.Y>wz2.Y:#找最低点
miny=wz2.Y
maxy=wz1.Y
dd1=2
dd1x=wz2.X
else:
miny=wz1.Y
maxy=wz2.Y
dd1=0
dd1x=wz1.X
wz1=obj1.GetPoint2dAt(1)
dd2=1
dd2x=wz1.X
if abs(miny-wz1.Y)>1:#差值太大选另一个
dd2=3
dd2x=obj1.GetPoint2dAt(3).X

else:#line,每个格子线的y
data.append(obj1.StartPoint.Y)

data.sort()
data.insert(0,miny)
data.append(maxy)
rg=range(len(data))

result = ed.GetSelection(SelectionFilter(Array[TypedValue]([TypedValue(0,'TEXT')])))
if (result.Status != PromptStatus.OK):
return
for objectid in result.Value.GetObjectIds():
obj1 = objectid.GetObject(0)#OpenMode.ForWrite)
m=obj1.Position.Y
j=obj1.Position.X
#ed.WriteMessage(str((minx,miny,maxx,maxy,m,j)))

if minx<j<maxx:
if miny<m<maxy:
z=float(ed.GetString('拉伸高度').StringResult)
z2=z/2
#yd=vtfloat((0,0,0))
for i in rg:
if m<data[i]:
break

s=data[i]#上线y
x=data[i-1]#下线y

#ed.WriteMessage(str((s,x)))
p1=Point3d((minx+0.1,s-0.1,0))
p2=Point3d((maxx-0.1,x+0.1,0))
movewd(ed,p1,p2,z2)
p1=Point3d((minx-0.1,x+0.1,0))
p2=Point3d((maxx+0.1,miny-0.1,0))
movewd(ed,p1,p2,z)
n.UpgradeOpen()
miny+=z
n.SetPointAt(dd1,Point2d(dd1x,miny))
n.SetPointAt(dd2,Point2d(dd2x,miny))

#doc.Application.ZoomWindow(p1,p2)
#for i in fanwei(doc,p1,p2):
# i.move(yd,vtfloat((0,z2,0)))
#doc.Application.ZoomWindow(p1,p2)
#for i in fanwei(doc,p1,p2):
# i.move(yd,vtfloat((0,z,0)))
# #i.update()

 

t.Commit()

 gangjinzongchangnew

xwz=SelectionFilter(Array[TypedValue]([TypedValue(-4,'<OR'),TypedValue(0,'TEXT'),TypedValue(0,'MTEXT'),TypedValue(-4,'OR>')]))
pPtOpts = PromptPointOptions(" ")
def WorldToEye(view):
return Matrix3d.WorldToPlane(view.ViewDirection) * Matrix3d.Displacement(view.Target.GetAsVector().Negate()) * Matrix3d.Rotation(view.ViewTwist, view.ViewDirection, view.Target)
def EyeToWorld(view):
return Matrix3d.Rotation(-view.ViewTwist, view.ViewDirection, view.Target) * Matrix3d.Displacement(view.Target.GetAsVector()) * Matrix3d.PlaneToWorld(view.ViewDirection)
def dianzi(ed,pt):
view= ed.GetCurrentView()
point = view.CenterPoint
point= Point3d(point.X, point.Y, 0.0).TransformBy(EyeToWorld(view))
w = view.Width/2
h = view.Height/2
P1 = Point3d(point.X - w +1, point.Y - h+1 , 0)
P2 = Point3d(point.X + w-1 , point.Y + h-1 , 0)
result = ed.SelectCrossingWindow(P1, P2,xwz)

minobj=False
minjl=0
if (result.Status == PromptStatus.OK):
for objectid in result.Value.GetObjectIds():
obj1 = objectid.GetObject(0)#OpenMode.ForWrite)
if isinstance(obj1,DBText):
zb=obj1.Position
else:
zb=obj1.Location
jlx=zb.X-pt.X
jly=zb.Y-pt.Y
jl=jlx*jlx+jly*jly
if minobj:
if jl<minjl:
minjl=jl
minobj=obj1
else:
minjl=jl
minobj=obj1
ex3d=minobj.Bounds
min=ex3d.MinPoint
max=ex3d.MaxPoint
##找左下和右上点
#x=[min.X,min.Y,max.X,max.Y]
if (min.X<pt.X<max.X)&( min.Y<pt.Y<max.Y):
return minobj


def main(SC):
doc,ed,db,t=SC
result = ed.GetSelection(xwz)
he=0
dian=0
if (result.Status == PromptStatus.OK):
for objectid in result.Value.GetObjectIds():
obj1 = objectid.GetObject(0)#OpenMode.ForWrite)
#if isinstance(obj1,Dimension ):
if isinstance(obj1,DBText):
y=obj1.TextString
else :
y=obj1.Text
flag=True
for j in fh:
if j in y:
he+=sum([float(s) for s in y.split(j)])/2
flag=False
break
if flag:
he+=float(y)
if dian==0:
s=y.rfind('.')
if s!=-1:
dian=len(y)-s-1

s= ed.GetString('gou').StringResult
if s:
if s[0].isdigit():#第一位数字
s=str(he)+'+'+s
else:
s=str(he)+s
try:
he+=float(eval(s))
except:
pass

pt= ed.GetPoint(pPtOpts).Value
obj=dianzi(ed,pt)
s='%g'%round(he,dian)
if obj:#选中文字,直接改内容
obj.UpgradeOpen()
if ed.GetString('gaicolor').StringResult:#改颜色
obj.ColorIndex=6
else:#选中空位置,复制一个以前的再改内容
obj1.UpgradeOpen()
obj=obj1.Clone()
bt = t.GetObject(db.BlockTableId,OpenMode.ForRead)
btr = t.GetObject(bt["*MODEL_SPACE"],OpenMode.ForWrite)#
btr.AppendEntity(obj)
t.AddNewlyCreatedDBObject(obj, True)
if isinstance(obj,DBText):
po=obj.Position
else:
po=obj.Location
ydvec=po.GetVectorTo(pt)
ydmt=Matrix3d.Displacement(ydvec)
obj.TransformBy(ydmt)

if isinstance(obj,DBText):
obj.TextString=s
else :
obj.Text=s
obj.Rotation=0#文字旋转

t.Commit()

 moveonelinenew

 


def cp(btr,t,obj):
btr.AppendEntity(obj)
t.AddNewlyCreatedDBObject(obj, True)

def main(SC):
doc,ed,db,t=SC
bt = t.GetObject(db.BlockTableId,OpenMode.ForRead)
btr = t.GetObject(bt["*MODEL_SPACE"],OpenMode.ForWrite)#
ed.WriteMessage('移的东西')
result = ed.GetSelection()
if (result.Status == PromptStatus.OK):
bb=result.Value.GetObjectIds()

ed.WriteMessage('参考位置')
result = ed.GetSelection()
if (result.Status == PromptStatus.OK):
obj1=result.Value.GetObjectIds()[0].GetObject(0)
#k=linek(obj1)
fuzhi=False
fx=False
cc=ed.GetString('回车不复制').StringResult
if cc:
fuzhi=True
cc=ed.GetString('回车上下移').StringResult
if cc:
fx=True
for i in bb:
obj = i.GetObject(OpenMode.ForWrite)
if fuzhi:
cp(btr,t,obj.Clone())#原地复制
#ed.WriteMessage(str(yxianjuli(obj1,expmid(obj,Point3d),k)))
#中心左右移到线上,k要倒数
exp=obj.Bounds#包围盒
po=Point3d(*expmid(exp.MinPoint,exp.MaxPoint))
intersectionPoints = Point3dCollection()
if fx:#有值,左右
line=Line(po,Point3d(po.X+1,po.Y,0))
else: #中心上下移到线上
line=Line(po,Point3d(po.X,po.Y+1,0))

line.IntersectWith(obj1, Intersect.ExtendThis , intersectionPoints, IntPtr.Zero,IntPtr.Zero);
if intersectionPoints.Count:
ydvec=po.GetVectorTo(intersectionPoints[0])#Vector3d(xxianjuli(obj1,,1/k),0,0)
ydmt=Matrix3d.Displacement(ydvec)
obj.TransformBy(ydmt)
t.Commit()

 

sameoricp

 


def expmid(exp):
min=exp.MinPoint
max=exp.MaxPoint
return Point3d((min.X+max.X)/2,(min.Y+max.Y)/2,0)
def main(SC):
doc,ed,db,t=SC

ed.WriteMessage('要复制的东西')
result = ed.GetSelection()
if (result.Status == PromptStatus.OK):
data['lastsele']=result.Value.GetObjectIds()

ed.WriteMessage('参考对象')
result = ed.GetSelection()
if (result.Status == PromptStatus.OK):
obj1=result.Value.GetObjectIds()[0].GetObject(0)
data['lastorig']=expmid(obj1.Bounds)
ed.WriteMessage('复制到哪')
result = ed.GetSelection()
if (result.Status == PromptStatus.OK):
bt = t.GetObject(db.BlockTableId,OpenMode.ForRead)
btr = t.GetObject(bt["*MODEL_SPACE"],OpenMode.ForWrite)#往图里增加东西要用这个
#data['nowsele']=result.Value.GetObjectIds()
aa=data['lastorig']
bb=data['lastsele']
for objectid in result.Value.GetObjectIds():
obj1 = objectid.GetObject(0)# OpenMode.ForRead)
ydvec=aa.GetVectorTo(expmid(obj1.Bounds))
ydmt=Matrix3d.Displacement(ydvec)
for i in bb:
obj = i.GetObject(OpenMode.ForRead).Clone()
obj.TransformBy(ydmt)
btr.AppendEntity(obj)
t.AddNewlyCreatedDBObject(obj, True)

 wangou

def wangou1(sp,ep,sp1,ep1,zxis):

if gou>0:
pe=ep
ps=sp
age=Point2d(ep1.X, ep1.Y).GetVectorTo(Point2d(pe.X, pe.Y)).Angle
ags=Point2d(ps.X, ps.Y).GetVectorTo(Point2d(sp1.X, sp1.Y)).Angle
else:
pe=sp
ps=ep
sp1,ep1=ep1,sp1
age=Point2d(pe.X, pe.Y).GetVectorTo(Point2d(ep1.X, ep1.Y)).Angle
ags=Point2d(sp1.X, sp1.Y).GetVectorTo(Point2d(ps.X, ps.Y)).Angle

pl1=Polyline(3)
p0=Point2d(pe.X,pe.Y)
pl1.AddVertexAt(0,p0, 0, 0, 0)

if tan:
pl1.SetBulgeAt(0, 0.668178638)
p1=Point2d(p0.X+gou*tan,p0.Y+gou)
p3=Point2d(p1.X-gou1,p1.Y+gou1)
pl1.AddVertexAt(1,p1, 0, 0, 0)
pl1.AddVertexAt(2,p3, 0, 0, 0)
else:
p1=Point2d(p0.X,p0.Y+gou)
pl1.AddVertexAt(1,p1, 0, 0, 0)


pl1.TransformBy(Matrix3d.Rotation(age, zxis, pe))

pl2=Polyline(3)
p0=Point2d(ps.X,ps.Y)
pl2.AddVertexAt(0,p0, 0, 0, 0)

if tan:
pl2.SetBulgeAt(0, -0.668178638)
p1=Point2d(p0.X-gou*tan,p0.Y+gou)
p3=Point2d(p1.X+gou1,p1.Y+gou1)
pl2.AddVertexAt(1,p1, 0, 0, 0)
pl2.AddVertexAt(2,p3, 0, 0, 0)
else:
p1=Point2d(p0.X,p0.Y+gou)
pl2.AddVertexAt(1,p1, 0, 0, 0)

pl2.TransformBy(Matrix3d.Rotation(ags, zxis, ps))

return(pl1,pl2)
def wangou(sp,ep,zxis):

if gou>0:
pe=ep
ps=sp
else:
pe=sp
ps=ep

pl1=Polyline(3)
p0=Point2d(pe.X,pe.Y)
pl1.AddVertexAt(0,p0, 0, 0, 0)
if tan:
pl1.SetBulgeAt(0, 0.668178638)
p1=Point2d(p0.X+gou*tan,p0.Y+gou)
p3=Point2d(p1.X-gou1,p1.Y+gou1)
pl1.AddVertexAt(1,p1, 0, 0, 0)
pl1.AddVertexAt(2,p3, 0, 0, 0)
else:
p1=Point2d(p0.X,p0.Y+gou)
pl1.AddVertexAt(1,p1, 0, 0, 0)


ag=Point2d(sp.X, sp.Y).GetVectorTo(Point2d(ep.X, ep.Y)).Angle
pl1.TransformBy(Matrix3d.Rotation(ag, zxis, pe))


pl2=Polyline(3)
p0=Point2d(ps.X,ps.Y)
pl2.AddVertexAt(0,p0, 0, 0, 0)

if tan:
pl2.SetBulgeAt(0, -0.668178638)
p1=Point2d(p0.X-gou*tan,p0.Y+gou)
p3=Point2d(p1.X+gou1,p1.Y+gou1)
pl2.AddVertexAt(1,p1, 0, 0, 0)
pl2.AddVertexAt(2,p3, 0, 0, 0)
else:
p1=Point2d(p0.X,p0.Y+gou)
pl2.AddVertexAt(1,p1, 0, 0, 0)

pl2.TransformBy(Matrix3d.Rotation(ag, zxis, ps))

return(pl1,pl2)


def main(SC):
doc,ed,db,t=SC
ed.WriteMessage('哪根线')
result = ed.GetSelection()
if (result.Status == PromptStatus.OK):
bt = t.GetObject(db.BlockTableId,OpenMode.ForRead)
btr = t.GetObject(bt["*MODEL_SPACE"],OpenMode.ForWrite)#往图里增加东西要用这个
curUCSMatrix = ed.CurrentUserCoordinateSystem
zxis= curUCSMatrix.CoordinateSystem3d.Zaxis
for objectid in result.Value.GetObjectIds():
obj1 = objectid.GetObject(0)# OpenMode.ForRead)
if hasattr(obj1,'NumberOfVertices'):
nv=obj1.NumberOfVertices-1
if nv==1:
jg=wangou(obj1.GetPoint3dAt(0),obj1.GetPoint3dAt(1),zxis)
else:
jg=wangou1(obj1.GetPoint3dAt(0),obj1.GetPoint3dAt(nv),obj1.GetPoint3dAt(1),obj1.GetPoint3dAt(nv-1),zxis)
else:
jg= wangou(obj1.StartPoint,obj1.EndPoint,zxis)

for i in jg:
btr.AppendEntity(i)
t.AddNewlyCreatedDBObject(i, True)

#ed.WriteMessage(str(obj1.GetBulgeAt(3)))
#ed.WriteMessage(str(obj1.Angle))
#tan=math.tan(obj1.Angle-0.3927)

t.Commit()

 tumianyidong


for i in ziza:
yiban.append([j.split('/') for j in i.split('+')])

def bzyd(nr):# x方向,标注范围起点,和图形起点的差值
return nr[1][0][0]-nr[0][0][0]

def bzchang(nr):
i=nr[0]
return i[1][0]-i[0][0]

def bzgao(nr):
i=nr[0]
return i[1][1]-i[0][1]

def movewd(ed,p1,p2,jl):
#result = ed.SelectWindow(p1,p2)#容易多选
p=Point3dCollection()
p.Add(p1)
p.Add(Point3d(p1.X,p2.Y,0))
p.Add(p2)
p.Add(Point3d(p2.X,p1.Y,0))
result = ed.SelectCrossingPolygon(p)
if (result.Status != PromptStatus.OK):
return

ydmt=Matrix3d.Displacement(jl)
for objectid in result.Value.GetObjectIds():
obj1 = objectid.GetObject(OpenMode.ForWrite)
obj1.TransformBy(ydmt)


def newjs():
data=[[]]
f=open(tempfile.gettempdir()+'\\tumian.json','rb')
zu=[]
for i in f.read().decode('gbk').splitlines():
i=eval(i)
j=i[-1]
if j in zu:#出现了重复的,分下一组
zu=[j]
data.append([])
#i.append(sunxu(j))
data[-1].append(i)
zu.append(j)
return data

def main(SC):
doc,ed,db,t=SC
data=newjs()
for jiedan in data:
xpy=qdxpy
ypyind=0
for jmlie in yiban:
for jm in jmlie:
#lg=len(jm)-1
maxbzchang=0
ypy=0
for j in jm:
for i in jiedan:
if len(i)==5:continue
if j in i[-1]:
i.append(xpy+bzyd(i))
i.append(-juli[ypyind])
chang=bzchang(i)
if chang>maxbzchang:
maxbzchang=chang
break
#if lg:#图形高自动算每列的y方向位置
# if lastdanmian:
# ypy-=11+bzgao(i)
# i.append(xpy)
# i.append(ypy)
# lastdanmian=i
# break
#else:
# i.append(xpy)
# i.append(0)
# break

ypyind+=1
xpy+=maxbzchang+jmhxjj
xpy+=(zdxpy+qdxpy-jmhxjj)

 

po=ed.GetPoint('左上角位置').Value
yqd=0
for i in data:
for j in i:
if len(j)==5:
#ed.WriteMessage(str(j))
p1=Point3d(*j[0][0])
p2=Point3d(*j[0][1])
jl=j[1]
ydvec=Vector3d(po.X+j[-2]-jl[0][0],yqd+po.Y+j[-1]-jl[1][1],0)
movewd(ed,p1,p2,ydvec)
yqd-=tkzxjj
t.Commit()

tumianfanwei-BiaoZhu

import tempfile

import clr
clr.AddReferenceByName('cadyilai')
from cadyilai import *

def main(SC):
doc,ed,db,t=SC
nr=[]
result = ed.GetSelection()
while (result.Status == PromptStatus.OK):
bzext=Extents3d ()
txext=Extents3d ()
bt=''
minmaxx=[]
minmaxy=[]
for objectid in result.Value.GetObjectIds():
obj1 = objectid.GetObject(0)#OpenMode.ForWrite)
if isinstance(obj1,Dimension ):
bzext.AddExtents(obj1.GeometricExtents)
#fx=obj1.DimLinePoint.Y #想用判断标注方向判断xy更贴合结构,但有的没有竖向标注,标注点差一点算了
#if abs(fx-p.Y)<0.01:#y相同 横着标注,存到x
#else:#竖着标注,存到y,!!!!没有竖向标注,出问题,算了
p=obj1.XLine1Point
if p.X not in minmaxx:
minmaxx.append(p.X)
if p.Y not in minmaxy:
minmaxy.append(p.Y)
p=obj1.XLine2Point
if p.X not in minmaxx:
minmaxx.append(p.X)
if p.Y not in minmaxy:
minmaxy.append(p.Y)
elif isinstance(obj1,DBText):
if obj1.Height>3.9:
btpd=obj1.TextString
if len(btpd)>2:
bt=btpd
bzext.AddExtents(obj1.GeometricExtents) #加范围

#ed.WriteMessage(str((bzext.ToString(),txext.ToString(),bt)))
if bt:
txext.Set(Point3d(min(minmaxx),min(minmaxy),0),Point3d(max(minmaxx),max(minmaxy),0))
nr.append('[%s,%s,"%s"]'%(bzext.ToString(),txext.ToString(),bt))
result = ed.GetSelection()
if len(nr):
f=open(tempfile.gettempdir()+'\\tumian.json','w')
f.write('\n'.join(nr))
f.close()

posted @ 2026-04-08 11:57  fakeplastictree  阅读(3)  评论(0)    收藏  举报