123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254 |
- (command "_menuunload" "GB-512")
- (command "_menuload" "GB-512")
- (menucmd "p15=+GB-512.pop1")
- (setvar "cmdecho" 0);;;关闭命令行回显功能
- (setvar "osmode" 0);关闭捕捉
- (setq wwh 8888)
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (defun c:fz()
- ;(princ "\n选择曲线:\n")
- (setq enedBreak (entsel "选择一根曲线:"))
- (if (/= enedBreak nil)
- (progn
- (setq Myen (car enedBreak))
- (setq Med (entget myen))
- (setq Mxyz (assoc 10 Med))
- (setq Myz (nth 3 Mxyz))
- (princ "\n曲线原来的值为: ")
- (princ Myz)
- (princ "\n")
- (setq Newz (getreal "输入曲线的值:"))
- (if (/= Newz nil)
- (command "change" myen "" "p" "e" newz "")
- )
- ))
- )
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (defun Joinzobao(en)
- (SETVAR "CMDECHO" 0)
- (setq lt nil)
- (setq enlist nil)
- (setq ed (entget en))
- (SETQ D70 (CDR (ASSOC 70 ED)))
- (setq en1 (entnext en))
- (setq ed1 (entget en1))
- (setq pp (cdr (assoc 0 ed1)))
- (if (= pp "VERTEX")
- (progn
- (setq pt1 (assoc 10 ed1))
- (if (/= pt1 nil)
- (progn
- (setq ptx (nth 1 pt1))
- (setq pty (nth 2 pt1))
- (setq ptz (nth 3 pt1))
- (setq pt (list ptx pty ptz))
- ))
- (setq lt (cons pt lt))
- (setq enlist (cons en1 enlist))
- (while (/= pp "SEQEND")
- (progn
- (setq en1 (entnext en1))
- (setq ed1 (entget en1))
- (setq pp (cdr (assoc 0 ed1)))
- (setq pt1 (assoc 10 ed1))
- (if (/= pt1 nil)
- (progn
- (setq ptx (nth 1 pt1))
- (setq pty (nth 2 pt1))
- (setq ptz (nth 3 pt1))
- (setq pt (list ptx pty ptz))
- ))
- (setq lt (cons pt lt))
- (setq enlist (cons en1 enlist))
- )
- )
- (setq lt (cdr lt))
- (setq enlist (cdr enlist))
- (IF (OR (= D70 1) (= D70 9))
- (PROGN
- (SETQ LT (CONS (LAST LT) LT))
- ))
- (setq lt (reverse lt))
- (setq enlist (reverse enlist))
- )
- (progn
- (princ "SORRY! NOT 3DPOLYLINE use <gx>\n")
- (SETQ LT NIL)
- (redraw en 4)
- (quit)
- ))
- )
- ;;连接2条3dpolyline;;coord为LJ的子程序
- (defun coord(en / ed)
- (setq ee (entsel "\n请选择要连接的线:"))
- (setq en (car ee))
- (setq ed (enTGET en))
- (print ed)
- (setq la (cdr (assoc 8 ed)))
- (setq pp (cdr (assoc 0 ed)))
- (if (/= pp "LINE")
- (progn
- (setq la (cdr (assoc 8 ed)))
- (setq c38 (assoc 38 ed))
- (if (eq c38 nil)
- (progn
- (setq en1 (entnext en))
- (setq ed1 (entget en1))
- (setq pp (cdr (assoc 0 ed1)))
-
- (setq pt1 (assoc 10 ed1))
- (if (/= pt1 nil)
- (progn
- (setq pt (cdr pt1))
- ))
- (setq lt (list pt))
- (while (/= pp "SEQEND")
- (progn
- (setq en1 (entnext en1))
- (setq ed1 (entget en1))
- (setq pp (cdr (assoc 0 ed1)))
- (setq pt1 (assoc 10 ed1))
- (if (/= pt1 nil)
- (progn
- (setq pt (cdr pt1))
- ))
- (setq lt (cons pt lt))
- )
- )
- (setq lt (cdr lt))
- ); not lwpolyline
- (progn
- (print "aaa")
- (setq ev38 (cdr c38))
- (setq len (length ed))
- (setq len (- len 3))
- (setq j 0)
- (setq c10 (car (nth j ed)))
- (while (/= c10 10)
- (progn
- (setq j (+ 1 j))
- (setq c10 (car (nth j ed)))
- ))
- (setq lt (list (list 0 0 0)))
- (while (< j len)
- (progn
- (setq lpt1 (cdr (nth j ed)))
- (setq lptx (nth 0 lpt1))
- (setq lpty (nth 1 lpt1))
- (setq lpt (list lptx lpty ev38))
- (setq lt (cons lpt lt))
- (setq j (+ j 4))
- ))
- (setq lt (reverse lt))
- (setq lt (cdr lt))
- )); is lwpolyline
-
- ) ; not line
- (progn
-
- (setq lip1 (cdr (assoc 10 ed)))
- (setq lt (list lip1))
- (setq lip2 (cdr (assoc 11 ed)))
- (setq lt (cons lip2 lt))
- )) ; line
-
- (setq pot (cadr ee))
- (setq edd ed)
- (setq lla la)
- (setq e en)
- (setq lt lt)
-
- ;(entdel en)
- )
-
- 连接2条3dpolyline,LJ为主程序;;coord为LJ的子程序
- (defun c:lj1()
- (setq lt1 (coord en))
- (setq e1 e)
- (setq la1 lla)
- (setq et1 edd)
- (setq pot1 pot)
- (setq lt1 (reverse lt1))
- (setq color1 (cdr c66))
- ;(setq c62 (assoc 62 ed))
- ;(setq cc62 (cons 62 3))
- ;(setq color1 (cdr c62))
- ;(setq ed (subst cc62 c62 ed))
- ;(entmod ed)
- (command "change" e1 "" "P" "c" "3" "")
- ;_______________
- (setq pss1 (car lt1))
- (setq ps1 (list (nth 0 pss1) (nth 1 pss1)))
- (setq pee1 (last lt1))
- (setq pe1 (list (nth 0 pee1) (nth 1 pee1)))
- (setq pot1 (list (nth 0 pot1) (nth 1 pot1)))
- (setq ds1 (distance ps1 pot1))
- (setq de1 (distance pe1 pot1))
- (if (> ds1 de1)
- (progn
- (setq lt1 lt1)
- )
- (progn
- (setq lt1 (reverse lt1))
- ))
- ;________________
- (setq lt2 (coord en))
- (setq e2 e)
- (setq la2 lla)
- (setq et2 edd)
- (setq pot2 pot)
- (setq lt2 (reverse lt2))
- (command "change" e2 "" "p" "c" 3 "")
- ;_________________
- (setq pss2 (car lt2))
- (setq ps2 (list (nth 0 pss2) (nth 1 pss2)))
- (setq pee2 (last lt2))
- (setq pe2 (list (nth 0 pee2) (nth 1 pee2)))
- (setq pot2 (list (nth 0 pot2) (nth 1 pot2)))
- (setq ds2 (distance ps2 pot2))
- (setq de2 (distance pe2 pot2))
- (if (< ds2 de2)
- (progn
- (setq lt2 lt2)
- )
- (progn
- (setq lt2 (reverse lt2))
- ))
- ;_________________
- (if (= la1 la2)
- (progn
- (setq lt (append lt1 lt2))
- (setvar "clayer" la1)
- (setq i 0)
- (setq len (length lt))
- (if (NOT (EQ e1 e2))
- (progn
- (command "3dpoly")
- (while (< i len)
- (progn
- (setq pt (nth i lt))
- (command pt)
- (setq i (+ 1 i))
- ))
- (command "")
- (entdel e1)
- (entdel e2)
- )
- (progn
- (prompt "\nSORRY! 你选择了同一条线!!!!")
- (print)
- ))
- )
- (progn
- (prompt "\nSORRY! 你选择的不是同一层的线!!!!")
- (PRINT)
- ))
- ;(command "change" "l" "" "p" "c" color1 "")
- )
- (defun c:mplnjoin()
- (setq Ssent nil)
- (setq Ppent nil)
- (setq e1 "xxx")
- (while (/= e1 nil)
- (progn
- (print)
- (setq E1 (entsel "选择第一根线[右键结束]:"))
- (if (/= e1 nil)
- (progn
- (setq ek1 (car e1))
- (setq p1 (cadr e1))
- (REDRAW Ek1 3)
- (print)
- (SETQ E2 (ENTSEL "选择第二根线:"))
- (if (/= e2 nil)
- (progn
- (setq ek2 (car e2))
- (setq p2 (cadr e2))
-
- (setq ssent (cons ek1 ssent))
- (setq ssent (cons ek2 ssent))
- (setq Ppent (cons p1 PPent))
- (setq Ppent (cons p2 PPent))
- ))
- ))
- ))
- (setq ssLen (length ssent))
- (setq ssn 0)
- (while (< ssn sslen)
- (progn
- (setq ek1 (nth ssn ssent))
- (setq p1 (nth ssn PPent))
- (setq ssn (+ 1 ssn))
- (setq ek2 (nth ssn Ssent))
- (setq p2 (nth ssn Ppent))
- (setq ssn (+ 1 ssn))
- (if (= ek1 ek2)
- (progn
- (command "pedit" ek1 "c" "x" "")
- )
- (progn
- (Joinzobao ek1)
- (setq ltk1 lt)
- (setq enlist1 enlist)
- (setq en1z ptz)
- (Joinzobao ek2)
- (setq enlist2 enlist)
- (setq ltk2 lt)
- (setq en2z ptz)
-
-
- (if (/= en1z en2z)
- (progn
- (princ "\n不能连接:高程值不相等\n")
- )
- (progn
- (setq pk11 (nth 0 ltk1))
- (setq pk12 (nth (- (length ltk1) 1) ltk1))
- (setq pk21 (nth 0 ltk2))
- (setq pk22 (nth (- (length ltk2) 1) ltk2))
- (setq d11 (distance p1 pk11))
- (setq d12 (distance p1 pk12))
- (setq d21 (distance p2 pk21))
- (setq d22 (distance p2 pk22))
- (if (< d11 d12)
- (progn (setq pk1 pk11) (setq enk1 (nth 0 enlist1)))
- (progn (setq pk1 pk12) (setq enk1 (nth (- (length enlist1) 1) enlist1)))
- )
- (if (< d21 d22)
- (progn (setq pk2 pk21) (setq enk2 (nth 0 enlist2)))
- (progn (setq pk2 pk22) (setq enk2 (nth (- (length enlist2) 1) enlist2)))
- )
- (setq pt1x (nth 0 pk1))
- (setq pt1y (nth 1 pk1))
- (setq pt1z (nth 2 pk1))
- (setq pt2x (nth 0 pk2))
- (setq pt2y (nth 1 pk2))
- (setq pt2z (nth 2 pk2))
- (if (= pt1z pt2z)
- (progn
- (setq ptzdx (/ (+ pt1x pt2x) 2))
- (setq ptzdy (/ (+ pt1y pt2y) 2))
- (setq Ptzd (list ptzdx ptzdy pt1z))
-
- (setq edk (entget enk1))
- (setq c10n (cons 10 ptzd))
- (setq c10 (assoc 10 edk))
- (setq edk (subst c10n c10 edk))
- (entmod edk)
- (entupd enk1)
-
- (setq edk (entget enk2))
- (setq c10n (cons 10 ptzd))
- (setq c10 (assoc 10 edk))
- (setq edk (subst c10n c10 edk))
- (entmod edk)
- (entupd enk1)
-
- (COMMAND "PEDIT" Ek1 "J" Ek1 Ek2 "" "")
- ));;
- ))
- ));;
- ))
-
- )
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (defun GB512blc(/ dcl_id1 done1)
- (setq dcl_id (load_dialog "GB-512.dcl"))
- (if (not (new_dialog "GB512A" dcl_id))
- (exit)
- )
- (setq wwblc "0")
- (action_tile "wwwblc" "(setq wwblc $value)")
- (setq done1(start_dialog))
- (if (= done1 1)
- (progn
- (if (= wwblc "0")(progn(setq wwblc 2000)(setq jc_dgj 2.0)))
- (if (= wwblc "1")(progn(setq wwblc 1000)(setq jc_dgj 1.0)))
- (if (= wwblc "2")(progn(setq wwblc 500)(setq jc_dgj 0.5)))
- )
- (progn
- (setq wwblc 2000)
- (setq jc_dgj 2.0)
- )
- )
- (unload_dialog dcl_id)
- (command "style" "STANDARD" "rs,hztxt" "0" "0.75" "0" "n" "n" "n")
- (setq PI 3.141592654)
- (setq jieshi "1")
- (setq jcdx1 "0")
- (setq JC_jqx "8120")
- (setq JC_sqx "8110")
- (setq JC_gcd "8310")
- ;;;;; (setq JC_dgj 2.0)
- (setvar "plinetype" 0)
- )
- ;;;;;;;;;;;;;;;;;;;;
- (defun GB512SZ(/ dcl_id1 done2 a1 a2 aa1 aa2)
- (setq dcl_id (load_dialog "GB-512.dcl"))
- (if (not (new_dialog "GB512B" dcl_id))
- (exit)
- )
- (if (= jieshi "1")
- (progn
- (set_tile "jieshi0" "0")
- (set_tile "jieshi1" "1") )
- (progn
- (set_tile "jieshi0" "1")
- (set_tile "jieshi1" "0") )
- )
- (if (= jcdx1 "1")
- (progn
- (set_tile "zdjcdx" "0")
- (set_tile "sdjcdx" "1") )
- (progn
- (set_tile "zdjcdx" "1")
- (set_tile "sdjcdx" "0") )
- )
- (set_tile "JCjqx" JC_jqx)
- (set_tile "JCsqx" JC_sqx)
- (set_tile "JCgcd" JC_gcd)
- (set_tile "JCdgj" (rtos JC_dgj))
-
- (action_tile "jieshi0" "(setq a1 $value)")
- (action_tile "jieshi1" "(setq a2 $value)")
- (action_tile "zdjcdx" "(setq aa1 $value)")
- (action_tile "sdjcdx" "(setq aa2 $value)")
- (action_tile "accept" "(box_txt)(done_dialog 1)")
-
- (setq done2(start_dialog))
- (if (= done2 1)
- (progn
- (if (= a2 "1")(setq jieshi "1")(setq jieshi "0"))
- (if (= aa2 "1")(setq jcdx1 "1")(setq jcdx1 "0"))
- ))
- (unload_dialog dcl_id)
- )
- ;;;;;;;;;;;;;;;;;
- (defun box_txt()
- (setq JC_jqx (get_tile "JCjqx" ))
- (setq JC_sqx (get_tile "JCsqx" ))
- (setq JC_gcd (get_tile "JCgcd" ))
- (setq JC_dgj (atof(get_tile "JCdgj" )))
- )
- (defun rcqx_def()
- (setq rcQxgs 4)
- (setq rcMapdis 1.0)
- (setq rcCs 3)
- (setq DrcCs0 1)
- (setq DrcCs1 1)
- (setq rcBlc 2000)
- )
- (defun MySetdlg(/ dcl_id )
- (princ "\nGB-512[设置]:\n")
- (setq dcl_id (load_dialog "GB-512.dcl"))
- (if (not (new_dialog "GB512c" dcl_id))
- (exit)
- )
- ;;;;;;
- (set_tile "RcMapDis" (rtos rcmapdis))
- (set_tile "RcBlc" (rtos rcblc))
- (set_tile "RcCs" (itoa rccs))
- (set_tile "DRcCs0" (itoa drccs0))
- (set_tile "DRcCs1" (itoa drccs1))
- (set_tile "RcQxgs" (itoa rcqxgs))
- ;;;;;;
- (action_tile "RcMapDis" "(setq srcmapdis $value)")
- (action_tile "RcBlc" "(setq srcblc $value)")
- (action_tile "RcCs" "(setq srccs $value)")
- (action_tile "DRcCs0" "(setq sdrccs0 $value)")
- (action_tile "DRcCs1" "(setq sdrccs1 $value)")
- (action_tile "RcQxgs" "(setq srcqxgs $value)")
- (setq What_next (start_dialog))
- (cond
- ((= 1 what_next) (RcNewdata))
- )
- (unload_dialog dcl_id)
- (setq srcqxgs nil
- srcblc nil
- srcmapdis nil
- srccs nil
- sdrccs0 nil
- sdrccs1 nil)
- (setq wwblc rcblc)
- (princ)
- )
- (defun RcNewdata()
- (if (/= srcqxgs nil) (setq rcQxgs (atoi srcqxgs)))
- (if (/= srcmapdis nil) (setq rcmapdis (atof srcmapdis)))
- (if (/= srccs nil) (setq RcCs (atoi srccs)))
- (if (/= sdrccs0 nil) (setq dRcCs0 (atoi sdrccs0)))
- (if (/= sdrccs1 nil) (setq dRcCs1 (atoi sdrccs1)))
- (if (/= srcblc nil) (setq rcBlc (atof srcblc)))
- )
- ;;;;;;;;;;;;;;;;;;;;;;;;
- (defun Zaoqx(l1pt l2pt)
- (setq l1tpx (nth 0 l1pt))
- (setq l1tpy (nth 1 l1pt))
- (setq l2tpx (nth 0 l2pt))
- (setq l2tpy (nth 1 l2pt))
- (setq qxnn 1)
- (while (<= qxnn Rcqxgs)
- (progn
- (zzpt l1tpx l2tpx rcbs qxnn)
- (setq Ltqxn (cons (list px py pz) Ltqxn))
- (setq qxnn (+ qxnn 1))
- ))
- (princ)
- )
- ;;;;;;
-
- (defun PlnLt(Plt n0)
- (if (/= Plt nil)
- (progn
- (setq i (+ n0 rcqxgs))
- (setq pf (nth n0 Plt))
- (setq len (length Plt))
- (command "pline" pf)
- (while (< i len)
- (progn
- (setq pto (nth i Plt))
- (command pto)
- (setq i (+ rcqxgs i))
- ))
- (command "")
- ))
- ;(setq plt nil)
- (princ)
- )
- ;;;;;;
- (defun Myfree()
- (setq Ltqxn nil)
- (setq lt nil)
- (setq lt1 nil)
- (setq lt2 nil)
- (setq en1 nil)
- (setq en2 nil)
- (setq rcbs nil)
- (setq l1tpx nil)
- (setq l2tpx nil)
- (setq l1tpy nil)
- (setq l2tpy nil)
- (setq dx nil)
- (setq dy nil)
- (setq px nil)
- (setq py nil)
- (princ)
- )
- (defun zzpt(l1tpx l2tpx rcbs nn)
- (setq dx (- l1tpx l2tpx))
- (setq dy (- l1tpy l2tpy))
- (setq px (- l1tpx (* dx rcbs nn)))
- (setq py (- l1tpy (* dy rcbs nn)))
- (setq pz (- p1z (* dgj nn)))
- ;;;;free
- (princ)
- )
- ;;;;;
- (rcqx_def)
- ;;;;(Mysetdlg);;;;;;;;;;参数设置;;;;;;;;
- ;;;;;
- (defun Rcqxzb(enLt p1 p2)
- (SETVAR "CMDECHO" 0)
- ;;;;;
- (setq EnLen (length enlt))
- (setq n 0)
- (setq min1 1000)
- (setq min2 1000)
- (while (< n Enlen)
- (progn
- (setq pt (nth n enlt))
- (setq ds1 (distance pt p1))
- (setq ds2 (distance pt p2))
- (if (< ds1 min1)
- (progn
- (setq min1 ds1)
- (setq the1 n)
- ))
- (if (< ds2 min2)
- (progn
- (setq min2 ds2)
- (setq the2 n)
- ))
- (setq n (+ 1 n))
- ))
- ;;;;
- (if (> the1 the2)
- (progn
- (setq addlt (reverse addlt))
- (setq thetmp the1)
- (setq the1 the2)
- (setq the2 thetmp)
- ))
- ;;;;
- (setq lt nil)
- (setq n 0)
- (while (< n Enlen)
- (progn
- ;;
- (if (and (>= n the1) (<= n the2))
- (progn
- (setq pt (nth n enlt))
- (setq ptx (nth 0 pt))
- (setq pty (nth 1 pt))
- (setq pt (list ptx pty))
- (setq lt (cons pt lt))
- )
- )
- ;;
- (setq n (+ 1 n))
- ))
- (princ)
- )
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (defun zobao(en p1 p2 dJx)
- (SETVAR "CMDECHO" 0)
- (setq IsJL 0)
- (setq lt nil)
- (setq ed (entget en))
- (SETQ D70 (CDR (ASSOC 70 ED)))
- (setq en1 (entnext en))
- (setq ed1 (entget en1))
- (setq pp (cdr (assoc 0 ed1)))
- (if (= pp "VERTEX")
- (progn
- (if (< djx 0)
- (progn
- (setq pt1 (assoc 10 ed1))
- (if (/= pt1 nil)
- (progn
- (setq ptx (nth 1 pt1))
- (setq pty (nth 2 pt1))
- (setq ptz (nth 3 pt1))
- (setq pt (list ptx pty))
- (setq lt (cons pt lt))
- ))
- ))
- ;;
- (while (/= pp "SEQEND")
- (progn
- (setq en1 (entnext en1))
- (setq ed1 (entget en1))
- (setq pp (cdr (assoc 0 ed1)))
- (setq pt1 (assoc 10 ed1))
- (if (/= pt1 nil)
- (progn
- (setq ptx (nth 1 pt1))
- (setq pty (nth 2 pt1))
- (setq ptz (nth 3 pt1))
- (setq pt (list ptx pty))
- ;;;;
- (if (< djx 0)
- (progn
- (setq lt (cons pt lt))
- )
- (progn
- (setq ds1 (distance pt p1))
- (setq ds2 (distance pt p2))
- ;;(print "ds1")
- ;;(print ds1)
- (if (= IsJL 0)
- (progn
- (if (< ds1 djx)
- (setq IsJL 1)
- )
- (if (< ds2 djx)
- (setq IsJL 2)
- )
- ))
-
- (if (and (= IsjL 1) (< ds2 djx))
- (setq pp "SEQEND");exit
- )
- (if (and (= IsjL 2) (< ds1 djx))
- (setq pp "SEQEND");exit
- )
-
- (if (or (= IsjL 1) (= IsjL 2))
- (setq lt (cons pt lt))
- )
-
- ));end 0
- ));;if
- ));;while
-
- (setq Mycando 1)
- )
- (progn
- (prompt "SORRY! NOT 3DPOLYLINE")
- (SETQ LT NIL)
- (setq Mycantdo 0)
- (redraw en 4)
- (quit)
- ))
- (princ)
- )
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
- (defun c:myedclose()
- (setq enedclose "xxx")
- (while (/= enedclose nil)
- (progn
- (princ "\n闭合:\n")
- (setq enedclose (entsel "选择一根线:"))
- (if (/= enedclose nil)
- (progn
- (setq Myen (car enedclose))
- (princ "\nedclose:")
- (command "pedit" Myen "c" "" "")
- (setq Myundoned (+ 1 Myundoned))
- ))
- ))
- )
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (defun c:myDelen()
- (princ "\n选择删除目标:\n")
- (setq en_delp1 (getpoint))
- (if (/= en_delp1 nil)
- (progn
- (setq en_delp2 (getcorner en_delp1))
- (if (/= en_delp2 nil)
- (progn
- (msg "1_x")
- (setq delp1_x (nth 0 en_delp1))
- (setq delp2_x (nth 0 en_delp2))
- (if (> delp1_x delp2_x)
- (progn
- (setq del_ens (ssget "c" en_delp1 en_delp2))
- )
- (progn
- (setq del_ens (ssget "w" en_delp1 en_delp2))
- ))
- (msg "s_L")
- (if (/= del_ens nil)
- (progn
- (setq Dels_Len (sslength del_ens))
- (msg Dels_Len)
- (setq n 0)
- (while (< n Dels_Len)
- (progn
- (setq delen (ssname del_ens n))
- (redraw delen 3)
- (setq n (+ 1 n))
- ))
- (princ "\n确定要删除![Y/N]\n")
- (setq Key (getstring))
- (if (not (eq (strcase key) "N"))
- (progn
- (setq drawLundo Dels_Len)
- (setq n 0)
- (while (< n Dels_Len)
- (progn
- (setq delen (ssname del_ens n))
- (command "erase" delen "")
- (setq n (+ 1 n))
- ))
- )
- (progn
- (setq n 0)
- (while (< n Dels_Len)
- (progn
- (setq delen (ssname del_ens n))
- (redraw delen 4)
- (setq n (+ 1 n))
- ))
- ));if "N"
- ))))
- ))
- )
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (defun c:myedBreak()
- (setq enedBreak "xxx")
- (while (/= enedBreak nil)
- (progn
- (princ "\n打断:\n")
- (setq enedBreak (entsel "选择一根线:"))
- (if (/= enedBreak nil)
- (progn
- (setq Myen (car enedBreak))
- (setq Mypt1 (cadr enedBreak))
- (princ Mypt1)
- (redraw myen 3)
- (setq enedpt (getpoint "选择打断点:"))
- (if (/= enedpt nil)
- (progn
- (command "break" Myen mypt1 enedpt "")
- (setq Myundoned (+ 1 Myundoned))
- ))
- ))
- ))
-
- )
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (defun c:myUndo()
- (if (> drawLundo 0)
- (progn
- (setq undon 0)
- (while (< undon drawLundo)
- (progn
- (command "undo" "")
- (setq undon (+ undon 1))
- ))
- (setq drawLundo -1)
- )
- (progn
- (if (> Myundon 0)
- (progn
- (setq undon 0)
- (while (< undon rcQxgs)
- (progn
- (command "undo" "")
- (setq undon (+ undon 1))
- ))
- (setq Myundon 0)
- )
- (progn
- (if (> Myundoned 0)
- (progn
- (command "undo" "")
- (setq Myundoned (- Myundoned 1))
- )
- (progn
- (princ "\n确定还要后悔![Y/N]\n")
- (setq Key (getstring))
- (if (eq (strcase key) "Y")
- (command "undo" "")
- )))))))
- (princ)
- )
-
- (defun c:fx()
- (setq en (car (entsel "请选择一条要修改方向的线::\n")))
- (setq ed (entget en))
- (setq en1 (entnext en))
- (setq ed1 (entget en1))
- (setq pp (cdr (assoc 0 ed1)))
- (setq pt (assoc 10 ed1))
- (setq lt (list pt))
- (while (/= pp "SEQEND")
- (progn
- (setq en1 (entnext en1))
- (setq ed1 (entget en1))
- (setq pp (cdr (assoc 0 ed1)))
- (setq pt (assoc 10 ed1))
- (setq lt (cons pt lt))
- )
- )
- (setq lt (cdr lt))
- (setq ln (length lt))
- (setq i 0)
- (setq e1 (entnext en))
- (setq d1 (entget e1))
- (while (< i ln)
- (progn
- (setq ptt (nth i lt))
- (setq pt (assoc 10 d1))
- (setq d2 (subst ptt pt d1))
- (entmod d2)
- (setq e1 (entnext e1))
- (setq d1 (entget e1))
- (setq i (+ 1 i))
- ))
- (command "redraw")
- )
- ;;;;;;;;;;格网;;;
- (defun c:gw()
- (undo_begin)
- (command "layer" "m" "TK" "c" "7" "" "")
- (setq p1 (getpoint "\n 输入第1个点:"))
- (setq p2 (getpoint "\n 输入第2个点:"))
- (setq p3 (getpoint "\n 输入第3个点:"))
- (setq p4 (getpoint "\n 输入第4个点:"))
- (setq p1x (car p1))
- (setq p1y (cadr p1))
- (setq p2x (car p2))
- (setq p2y (cadr p2))
- (setq p3x (car p3))
- (setq p3y (cadr p3))
- (setq p4x (car p4))
- (setq p4y (cadr p4))
- (setq pxa (* 200 (fix (/ (max p1x p2x p3x p4x) 200))))
- (setq pxi (+ 200 (* 200 (fix (/ (min p1x p2x p3x p4x) 200)))))
- (setq pya (* 200 (fix (/ (max p1y p2y p3y p4y) 200))))
- (setq pyi (+ 200 (* 200 (fix (/ (min p1y p2y p3y p4y) 200)))))
- (setq ps (list pxi pyi 0))
- (setq n1 (/ (- pxa pxi) 200))
- (setq n2 (/ (- pya pyi) 200))
- (setq i 0)
- (while ( <= i n1)
- (progn
- (setq j 0)
- (while ( <= j n2)
- (progn
- (setq ptx (+ pxi (* i 200)))
- (setq pty (+ pyi (* j 200)))
- (setq pt (list ptx pty 0))
- (command "insert" "cs" pt 2 2 0 "")
- (setq j (+ 1 j))
- (princ "okokok")
- )
- )
- (setq i (+ 1 i))
- )
- )
- (undo_end)
- )
-
- (defun c:3D-2D( / i flr ss slen ent ed la cla)
- (undo_begin)
- (setq flr '((-4 . "<AND")
- (0 . "POLYLINE")
- (-4 . "<OR") (70 . 8) (70 . 9) (70 . 12) (70 . 13) (-4 . "OR>")
- (-4 . "AND>")))
- (princ "\n曲线编辑[三维转二维]")
- (setq cla (getvar "clayer"))
- (setq ss (ssget flr))
- (if (/= ss nil)
- (progn
- (setq slen (sslength ss))
- (setq i 0)
- (while (< i slen)
- (setq ent (ssname ss i))
- (setq ed (entget ent))
- (setq la (cdr (assoc 8 ed)))
- (get-line-list ent)
- (entdel ent)
- (command "layer" "m" la "")
- (Draw_Pln_lt line-list)
- (setq i (+ 1 i))
- )
- ))
- (command "layer" "m" cla "")
- (setvar "plinewid" 0)
- (undo_end)
- )
- (defun Draw_Pln_lt(Plt / i pf len pto)
- (if (/= Plt nil)
- (progn
- (setq i 0)
- (setq pf (nth i Plt))
- (setq len (length Plt))
- (command "pline" pf)
- (setq i 1)
- (while (< i len)
- (setq pto (nth i Plt))
- (command pto)
- (setq i (+ 1 i))
- )
- (command "")
- ))
- )
- ;;;;;;高程点;;;
- (defun c:smb()
- (undo_begin)
- (setq lla (getstring "输入层名:"))
- (command "layer" "s" lla "" "")
- (setq ss (ssget "x" (list (cons 8 lla))))
- (setq len (sslength ss))
- (setq i 0)
- (while (< i len)
- (progn
- (setq en (ssname ss i))
- (setq et (entget en))
- (setq pp (cdr (assoc 0 et)))
- (if (= pp "POINT")
- (progn
- (setq pt (cdr (assoc 10 et)))
- (command "erase" en "")
- ; (command "DONUT" 0 1 pt "")
- (COMMAND "INSERT" "HP" PT 1 1 0)
- )
- (PROGN
- (IF (= PP "INSERT")
- (PROGN
- (command "erase" en "")
- )
- )
- ))
- (setq i (+ 1 i))
- )
- )
- (undo_end)
- )
-
- ;;;;替换块;;;;
- (defun c:chgsmb1()
- (undo_begin)
- (if (= wwblc nil) (setq xl 4.0))
- (if (= wwblc 500) (setq xl 1.0))
- (if (= wwblc 1000) (setq xl 2.0))
- (if (= wwblc 2000) (setq xl 4.0))
- (print /n)
- (setq lla (getstring "输入被替换块层名:"))
- (setq dblock (getstring "输入新块名:"))
- (setq newlay (getstring "输入替换后新层名:"))
- ;(setq xl (getreal "输入比列:"))
- (command "layer" "s" lla "")
- (setq lla (list '(0 . "insert") (cons 8 lla)))
- (setq ss (ssget "x" lla))
- (setq len (sslength ss))
- (setq i 0)
- (while (< i len)
- (progn
- (print /ni)
- (setq en (ssname ss i))
- (setq et (entget en))
- (setq pp (cdr (assoc 0 et)))
- (if (= pp "INSERT")
- (progn
- (setq pt (cdr (assoc 10 et)))
- (command "erase" en "")
- (command "layer" "m" newlay "c" "4" "" "")
- (command "insert" dblock pt xl xl "" "")
- ))
- (setq i (+ 1 i))
- )
- )
- (undo_end)
- )
-
- ;;;;;;点线;;;
- (defun c:dx () ;点线
- (setq en (car(entsel "\n请选择线:")));
- (setq d1 (getdist "\n点距:"))
- (setq rad (getdist "\n点径:"))
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setq d1 (* d1 (/ wwblc 1000)))
- (setq rad (* rad (/ wwblc 1000)))
- (setq D D1)
- (setq PC (nth i lt))
- (setq i (+ 1 I))
- (setq DC (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (WHILE (/= dc nil)
- (setq km (distance pc dc))
- (setq ang (angle pc dc))
- (while (>= km d)
- (setq am (polar pc ang d))
- (command "donut" "0" rad am "")
- (setq km (- km d))
- (setq d d1)
- (setq pc am)
- );endwhile
- (setq d (- d km))
- (setq pc dc)
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq DC (nth i lt))
- );endwhile
- ));IF LT IS NULL BLOCK
- ;(command "layer" "f" la "");根据需要选择此行
- );endfunction
- ;;;;;;;;;;;;;;;;;;;;;;解释部分;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (defun ZuoBiao1 (en) ;提取Z值
- (SETVAR "CMDECHO" 0)
- (setq lt nil)
- (setq D70 (CDR (ASSOC 70 ED)))
- (setq en1 (entnext en))
- (setq ed1 (entget en1))
- (setq pp (cdr (assoc 0 ed1)))
- (if (= pp "VERTEX")
- (progn
- (setq pt1 (assoc 10 ed1))
- (if (/= pt1 nil)
- (progn
- (setq ptx (nth 1 pt1))
- (setq pty (nth 2 pt1))
- (setq ptz (nth 3 pt1))
- (setq pt (list ptx pty ptz))
- );endprogn
- );endif
- (setq lt (cons pt lt))
- (while (/= pp "SEQEND")
- (progn
- (setq en1 (entnext en1))
- (setq ed1 (entget en1))
- (setq pp (cdr (assoc 0 ed1)))
- (setq pt1 (assoc 10 ed1))
- (if (/= pt1 nil)
- (progn
- (setq ptx (nth 1 pt1))
- (setq pty (nth 2 pt1))
- (setq ptz (nth 3 pt1))
- (setq pt (list ptx pty ptz))
- );endprogn
- );endif
- (setq lt (cons pt lt))
- );endprong
- );endwhile
- (setq lt (cdr lt))
- (IF (OR (= D70 1) (= D70 32))
- (PROGN
- (setq LT (CONS (LAST LT) LT))
- );endprogn
- );endif
- (setq lt (reverse lt))
- );endprogn
- (progn
- (prompt "SORRY! THERE IS NOT 3DPOLYLINE IN YOUR LAYER::\n")
- (setq LT NIL)
- (setq KEY (GETSTRING "GO! GO!<Y>:\n"))
- (redraw en 3)
- );endprogn
- );endif
- );endfunction
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;生成所需符号线
-
- ;;;;;;
- (defun c:gxk () ;;改变所选线的线宽
-
- (prompt "\n改变所选线的线宽!")
- (setq en (car (entsel "\n选择需要改线宽的线:")))
- ;(setq sww (getint "\n输入比例(1.(1:500) 2.(1:1000) 3.(1:2000))<3>:"))
- (setq wid (getreal "\n输入新线宽(mm):"))
-
- (cond
- ((= wwblc nil) (setq sc 2.0))
- ((= wwblc 500) (setq sc 0.5))
- ((= wwblc 1000) (setq sc 1.0))
- ((= wwblc 2000) (setq sc 2.0))
- );endcond
- (setq width (* wid sc))
- (command "pedit" en "w" width "")
- ; (setq ed (entget en))
- ; (setq la (cdr (assoc 8 ed)))
- ; (setq lla (strcat la "_sym"))
- ; (command "layer" "m" lla "c" "4" "" "")
- ;
- ; (setq lt (get-line-list en))
- ; (IF (/= LT NIL)
- ; (PROGN
- ; (setq i 0)
- ; (setvar "PLINEWID" width) ;;;
- ; (setq Pt (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- ; (command "pline" pt)
- ; (while (/= pt nil)
- ; (setq i (+ 1 i))
- ; (setq pt (nth i lt))
- ; (command pt)
- ; );endwhile
- ; (command "")
- ; );endprogn
- ; );endif
- ;(command "erase" en "")
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- ;(setvar "PLINEWID" 0)
- );endfunction
-
- ;;;;;;
- (defun c:gxkla () ;;改变所选层的线宽
-
- (prompt "\n改变所选层的线宽!")
-
- (setq s (getstring "\n选择需要改线宽的层名:"))
- ;(setq sww (getint "\n输入比例(1.(1:500) 2.(1:1000) 3.(1:2000))<3>:"))
- (setq wid (getreal "\n输入新线宽(mm):"))
- (setq s1 (cons '8 s))
- (setq s2 '(0 . "POLYLINE"))
- (setq s3 (list s1 s2))
- (setq ss (ssget "x" s3))
- (setq n (sslength ss))
- (setq t 0)
- (setq en (ssname ss t))
-
- ;(setq ed (entget en))
- ;(setq la (cdr (assoc 8 ed)))
- ;(setq lla (strcat la "_sym"))
- ;(command "layer" "m" lla "c" "4" "" "")
-
- (cond
- ((= wwblc nil) (setq sc 2.0))
- ((= wwblc 500) (setq sc 0.5))
- ((= wwblc 1000) (setq sc 1.0))
- ((= wwblc 2000) (setq sc 2.0))
-
- );endcond
- (setq width (* wid sc))
-
- (while (< t n)
- (command "pedit" en "w" width "")
- ; (setq lt (get-line-list en))
- ; (IF (/= LT NIL)
- ; (PROGN
- ; (setq i 0)
- ; (setvar "PLINEWID" width) ;;;
- ; (setq Pt (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- ; (command "pline" pt)
- ; (while (/= pt nil)
- ; (setq i (+ 1 i))
- ; (setq pt (nth i lt))
- ; (command pt)
- ; );endwhile
- ; (command "")
- ; );endprogn
- ; );endif
- ;(command "erase" en "")
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq t (+ 1 t))
- (setq en (ssname ss t))
- );endwhile(< t n)
- ;(setvar "PLINEWID" 0)
- );endfunction
-
- ;;;;;;
- (defun c:443b () ;;不依比例尺的围墙
- (undo_begin)
- (if (= jieshi "1")
- (PROGN
- (setq enss (ssget "x" '((-4 . "<OR")(0 . "POLYLINE")(0 . "LWPOLYLINE")(-4 . "OR>") (8 . "2430"))))
- (if (= enss nil)(PROGN(print "找不到 2430 !")(exit)))
- (setq len (sslength enss))
- (setq t 0)
- (setq en (ssname enss t))
- )
- (PROGN
- (setq en(car (entsel "\n选择基线:")))
- (setq len 1)
- (setq t 0)
- ));endif
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
- (setq width (* 0.0003 wwblc))
- (setq wid_1 (* 0.0006 wwblc))
- (setq hei_1 (* (+ 0.00015 0.0006) wwblc))
- (setq d1 (* 0.01 wwblc))
- (setq d d1)
- (setvar "PLINEWID" width) ;;;
- (while (< t len)
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setvar "PLINEWID" width)
- (setq Pt (nth i lt))
- (command "pline" pt)
- (while (/= pt nil)
- (setq i (+ 1 i))
- (setq pt (nth i lt))
- (command pt)
- );endwhile
- (command "")
- );endprogn
- );endif
- (setq I 0)
- (setq pc (nth I lt))
- (setq I (+ 1 I))
- (setq dc (nth I lt))
- (WHILE (/= dc nil)
- (setq km (distance pc dc))
- (setq ang (angle pc dc))
- (while (>= km d)
- (setvar "PLINEWID" wid_1)
- (setq am (polar pc ang d))
- (setq an (polar am (+ ang 1.570796) hei_1))
- (command "pline" am an "")
- (setq km (- km d))
- (setq d d1)
- (setq pc am)
- );endwhile
- (setq d (- d km))
- (setq pc dc)
- (setq i (+ 1 i))
- (setq DC (nth i lt))
- );endwhile
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq t (+ 1 t))
- (if (= jieshi "1")(setq en (ssname enss t)))
- );endwhile(< t n)
- (setvar "PLINEWID" 0)
- (command "layer" "f" la "")
- (undo_end)
- );endfunction
-
-
- ;;;;;
- (defun c:535 () ;打谷场,球场
- (undo_begin)
- (setvar "cmdecho" 0)
- (if (= jieshi "0")
- (progn
- (SETQ enn '((-4 . "<OR")
- (0 . "POLYLINE")
- (0 . "LWPOLYLINE")
- (-4 . "OR>"))
- )
- (prompt "\n选择基线: ")
- (setq SsSel (ssget enn))
- )
- (progn
- (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "3350"))))
- ))
- (setq len (sslength SsSel))
- (setq t 0)
- (setq en (ssname SsSel t))
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
- (while (< t len)
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setq d1 (* 0.0016 wwblc))
- (setq rad (* 0.0003 wwblc))
- (setq D D1)
- (setq PC (nth i lt))
- (setq i (+ 1 I))
- (setq DC (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (WHILE (/= dc nil)
- (setq km (distance pc dc))
- (setq ang (angle pc dc))
- (while (>= km d)
- (setq am (polar pc ang d))
- (command "donut" "0" rad am "")
- (setq km (- km d))
- (setq d d1)
- (setq pc am)
- );endwhile
- (setq d (- d km))
- (setq pc dc)
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq dc (nth i lt))
- );endwhile
- ));IF LT IS NULL BLOCK
- (setq t (+ 1 t))
- (setq en (ssname SsSel t))
- );endwhile
- (command "layer" "f" la "");根据需要选择此行
- (setvar "aunits" 0)
- (undo_end)
- );endfunction
-
- ;;;;;;;;;;;;;改变已跟计曲线及首曲线的线宽
- (defun c:1011a () ;;首曲线
-
- (setq width (* 0.00015 wwblc))
- (setq ss (ssget "x" '((0 . "POLYLINE") (8 . "8110"))))
- (setq n (sslength ss))
- (setq t 0)
- (setq en (ssname ss t))
-
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
-
- (command "layer" "m" lla "c" "4" "" "")
- (while (< t n)
-
- (setq lt (ZuoBiao1 en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setvar "PLINEWID" width) ;;;
- (setq Pt (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (command "pline" pt)
- (while (/= pt nil)
- (setq i (+ 1 i))
- (setq pt (nth i lt))
- (command pt)
- );endwhile
- (command "")
- );endprogn
- );endif
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq t (+ 1 t))
- (setq en (ssname ss t))
- );endwhile(< t n)
- (setvar "PLINEWID" 0)
- (command "layer" "f" la "" );;根据需要选择此行
- );endfunction
-
-
-
- ;;;
- (defun c:1011b () ;;;;计曲线
-
- (setq width (* 0.0003 wwblc))
- (setq ss (ssget "x" '((0 . "POLYLINE") (8 . "8120"))))
- (setq n (sslength ss))
- (setq t 0)
- (setq en (ssname ss t))
-
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
- (while (< t n)
-
- (setq lt (ZuoBiao1 en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setvar "PLINEWID" width) ;;;
- (setq Pt (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (command "pline" pt)
- (while (/= pt nil)
- (setq i (+ 1 i))
- (setq pt (nth i lt))
- (command pt)
- );endwhile
- (command "")
- );endprogn
- );endif
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq t (+ 1 t))
- (setq en (ssname ss t))
- );endwhile(< t n)
- (setvar "PLINEWID" 0)
- (command "layer" "f" la "" );;根据需要选择此行
- );endfunction
-
- ;;;;;
- (defun c:831 () ;;单线渠831
- (undo_begin)
- (setvar "cmdecho" 0)
- (if (= jieshi "0")
- (progn
- (SETQ enn '((-4 . "<OR")
- (0 . "POLYLINE")
- (0 . "LWPOLYLINE")
- (-4 . "OR>"))
- )
- (prompt "\n选择基线: ")
- (setq SsSel (ssget enn))
- )
- (progn
- (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "6310"))))
- ))
- (setq width (* 0.0003 wwblc))
- (setq n (sslength SsSel))
- (setq t 0)
- (setq en (ssname SsSel t))
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
- (while (< t n)
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setvar "PLINEWID" width) ;;;
- (setq Pt (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (command "pline" pt)
- (while (/= pt nil)
- (setq i (+ 1 i))
- (setq pt (nth i lt))
- (command pt)
- );endwhile
- (command "")
- );endprogn
- );endif
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq t (+ 1 t))
- (setq en (ssname SsSel t))
- );endwhile
- (setvar "PLINEWID" 0)
- (command "layer" "f" la "" );;根据需要选择此行
- (undo_end)
- );endfunction
-
- ;;;;;;
- (defun c:gc ();高程点及注记
-
- (setvar "cmdecho" 0)
- (setvar "dimzin" 2)
- (setq n 1);注记小数位
- (setq dia (* 0.0004 wwblc))
- (setq hei_word (* 0.002 wwblc))
- (setq jiaju (* 0.0015 wwblc))
- (command "style" "gcd" "黑体" "" 0.8 "" "" "")
- (while
- (setq dot2d (getpoint "\n输入高程点位置:"))
- (setq dott (getpoint "\n输入注记起点:"))
- ;(setq dott (polar dot2d 0 jiaju))
- ;(setq dott (polar dott -90 (/ hei_word 2.0)))
- (setq dotz (getreal "\n输入高程值:"))
- (setq dot (list (car dot2d) (car (cdr dot2d)) dotz))
- (command "layer" "m" "8310" "" "")
- (command "insert" "hp" dot "" "" "")
- (setq dottext (list (car dott) (car (cdr dott)) dotz))
- ;(setq dottext dott)
- (setq zj (rtos dotz 2 1))
- (command "text" dottext hei_word "0" zj)
- (command "layer" "s" "0" "")
- ))
-
- ;;;;;;
- (defun c:Bg ();比高点及注记
-
- (setvar "cmdecho" 0)
- (setvar "dimzin" 2)
- (setq n 1);注记小数位
- (setq dia (* 0.0004 wwblc))
- (setq hei_word (* 0.002 wwblc))
- (setq jiaju (* 0.0015 wwblc))
- (command "style" "gcd" "黑体" "" 0.8 "" "" "")
- (while
- (setq dot2d (getpoint "\n输入比高点位置:"))
- (setq dott (getpoint "\n输入注记起点:"))
- ;(setq dott (polar dot2d 0 jiaju))
- ;(setq dott (polar dott -90 (/ hei_word 2.0)))
- (setq dotz (getreal "\n输入高程值:"))
- (setq dot (list (car dot2d) (car (cdr dot2d)) dotz))
- (command "layer" "m" "8340" "" "")
- (command "insert" "hp" dot "" "" "")
- (setq dottext (list (car dott) (car (cdr dott)) dotz))
- ;(setq dottext dott)
- (setq zj (rtos dotz 2 1))
- (command "text" dottext hei_word "0" zj)
- ))
-
-
- ;;;;;;;;;;
- (defun jqx (endln / ename etype elist);跟踪后直接生成计曲线
-
- (setq width (* 0.0003 2000))
- (setq ename (car endln))
- (if ename
- (setq elist (entget ename))
- (princ "\nNo entity found ")
- );end if ename
- (if elist
- (progn
- (setq etype (cdr (assoc 0 elist)))
- (if ( = etype "POLYLINE")
- (command "._pedit" ename "w" width "")
- (princ "\nEntity is not a polyline ")
- );end if etype ends the if statement
- );end progn
- );end if elist
- );end of function
-
- ;;;;;;;;;;
- (defun sqx (endln / ename etype elist);跟踪后直接生成首曲线
-
- (setq width (* 0.00015 2000))
- (setq ename (car endln))
- (if ename
- (setq elist (entget ename))
- (princ "\nNo entity found ")
- );end if ename
- (if elist
- (progn
- (setq etype (cdr (assoc 0 elist)))
- (if ( = etype "POLYLINE")
- (command "._pedit" ename "w" width "")
- (princ "\nEntity is not a polyline ")
- );end if etype ends the if statement
- );end progn
- );end if elist
- );end of function
-
-
- (defun c:644 () ;内部道路644:虚线--实线1,空格1,线宽0.15
- (undo_begin)
- (setvar "cmdecho" 0)
- (if (= jieshi "0")
- (progn
- (SETQ enn '((-4 . "<OR")
- (0 . "POLYLINE")
- (0 . "LWPOLYLINE")
- (-4 . "OR>"))
- )
- (prompt "\n选择基线: ")
- (setq SsSel (ssget enn))
- )
- (progn
- (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "4440"))))
- ))
- (setq len (sslength SsSel))
- (setq t 0)
- (setq en (ssname SsSel t))
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
- (while (< t len)
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setq d1 (* 0.001 wwblc))
- (setq d2 (* 0.001 wwblc))
- ;(setq width (* 0.00015 wwblc)) ;;;注意线宽
- ;(setvar "PLINEWID" width) ;;;
- (setvar "PLINEWID" 0)
- (setq D D1)
- (setq PC (nth i lt))
- (setq i (+ 1 I))
- (setq DC (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (setq kk 1)
- (WHILE (/= dc nil)
- (setq km (distance pc dc))
- (setq ang (angle pc dc))
- (while (>= km d)
- (setq am (polar pc ang d))
- (if (= kk 1)
- (progn(command "pline" pc am ""))
- );endif
- (setq km (- km d))
- (if (= kk 1)
- (progn(setq kk 2)
- (setq d d2));else
- (progn(setq kk 1)
- (setq d d1));endprogn
- );endif
- (setq pc am)
- );endwhile
- (if (= kk 1)
- (progn(command "pline" pc dc ""))
- );endif
-
- (setq d (- d km))
- (setq pc dc)
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq DC (nth i lt))
- );endwhile
-
- ));IF LT IS NULL BLOCK
- (setq t (+ 1 t))
- (setq en (ssname SsSel t))
- );endwhile
- (setvar "PLINEWID" 0)
- (command "layer" "f" la "" );根据需要选择此行
- (undo_end)
- );endfunction
-
- ;;;;;;;;;;
- (defun c:414 () ;破坏房屋414,廊房:虚线--实线2,空格1,线宽0.15
- (undo_begin)
- (if (= jieshi "1")
- (PROGN
- (setq ss (ssget "x" '((-4 . "<OR")(0 . "POLYLINE")(0 . "LWPOLYLINE")(-4 . "OR>") (8 . "2140"))))
- (if (= ss nil)(PROGN(print "找不到 2140 !")(exit)))
- (setq len (sslength ss))
- (setq t 0)
- (setq en (ssname ss t))
- )
- (PROGN
- (setq en(car (entsel "\n选择基线:")))
- (setq len 1)
- (setq t 0)
- ));endif
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
- (while (< t len)
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setq d1 (* 0.002 2000));;注意这两行
- (setq d2 (* 0.001 2000));;
- ;(setq width (* 0.00015 wwblc)) ;;;注意线宽
- ;(setvar "PLINEWID" width);;;
- (setvar "PLINEWID" 0)
- (setq D D1)
- (setq PC (nth i lt))
- (setq i (+ 1 I))
- (setq DC (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (setq kk 1)
- (WHILE (/= dc nil)
- (setq km (distance pc dc))
- (setq ang (angle pc dc))
- (while (>= km d)
- (setq am (polar pc ang d))
- (if (= kk 1)
- (progn(command "pline" pc am ""))
- );endif
- (setq km (- km d))
- (if (= kk 1)
- (progn(setq kk 2)
- (setq d d2))
- (progn(setq kk 1)
- (setq d d1));endprogn
- );endif
- (setq pc am)
- );endwhile
- (if (= kk 1)
- (progn(command "pline" pc dc ""))
- );endif
- (setq d (- d km))
- (setq pc dc)
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq DC (nth i lt))
- );endwhile
- ));IF LT IS NULL BLOCK
- (setq t (+ 1 t))
- (if (= jieshi "1")(setq en (ssname ss t)))
- );endwhile
- (setvar "PLINEWID" 0)
- (command "layer" "f" la "");根据需要选择此行
- (undo_end)
- );endfunction
- ;;;;;
- (defun c:811b()
- (if (= jieshi "0")
- (progn
- (SETQ enn '((-4 . "<OR")
- (0 . "POLYLINE")
- (0 . "LWPOLYLINE")
- (-4 . "OR>"))
- )
- (prompt "\n选择基线: ")
- (setq SsSel (ssget enn))
- )
- (progn
- (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "6113"))))
- ))
- (if (/= sssel nil)(xsh SsSel)(print "没有找到 6113 !"))
- )
- (defun c:812 ()
- (if (= jieshi "0")
- (progn
- (SETQ enn '((-4 . "<OR")
- (0 . "POLYLINE")
- (0 . "LWPOLYLINE")
- (-4 . "OR>"))
- )
- (prompt "\n选择基线: ")
- (setq SsSel (ssget enn))
- )
- (progn
- (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "6121"))))
- ))
- (if (/= sssel nil)(xsh SsSel)(print "没有找到 6121 !"))
- )
- (defun xsh(SsSel);时令河,高水界:虚线--实线3,空格1,线宽0.15
- (undo_begin)
- (setvar "cmdecho" 0)
- (setq len (sslength SsSel))
- (setq t 0)
- (setq en (ssname SsSel t))
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
- (while (< t len)
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setq d1 (* 0.003 wwblc))
- (setq d2 (* 0.001 wwblc))
- ;(setq width (* 0.00015 wwblc)) ;;;注意线宽
- ;(setvar "PLINEWID" width);;;
- (setvar "PLINEWID" 0)
- (setq D D1)
- (setq PC (nth i lt))
- (setq i (+ 1 I))
- (setq DC (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (setq kk 1)
- (WHILE (/= dc nil)
- (setq km (distance pc dc))
- (setq ang (angle pc dc))
- (while (>= km d)
- (setq am (polar pc ang d))
- (if (= kk 1)
- (progn(command "pline" pc am ""))
- );endif
- (setq km (- km d))
- (if (= kk 1)
- (progn(setq kk 2)
- (setq d d2))
- (progn(setq kk 1)
- (setq d d1));endprogn
- );endif
- (setq pc am)
- );endwhile
- (if (= kk 1)
- (progn(command "pline" pc dc ""))
- );endif
- (setq d (- d km))
- (setq pc dc)
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq DC (nth i lt))
- );endwhile
- ));IF LT IS NULL BLOCK
- (setq t (+ 1 t))
- (setq en (ssname SsSel t))
- );endwhile
- (setvar "PLINEWID" 0)
- (command "layer" "f" la "");根据需要选择此行
- (undo_end)
- );endfunction
-
- ;;;;;;
- (defun c:642a () ;依比例的乡村路642a--虚线--实线4,空格1,线宽0.2
- (undo_begin)
- (setq en (car(entsel "请选择虚线边:")));绘虚线边
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setq d1 (* 0.004 wwblc))
- (setq d2 (* 0.001 wwblc))
- (setq width (* 0.0002 wwblc)) ;;;注意线宽
- (setvar "PLINEWID" width);;;
- (setq D D1)
- (setq PC (nth i lt))
- (setq i (+ 1 I))
- (setq DC (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (setq kk 1)
- (WHILE (/= dc nil)
- (setq km (distance pc dc))
- (setq ang (angle pc dc))
- (while (>= km d)
- (setq am (polar pc ang d))
- (if (= kk 1)
- (progn(command "pline" pc am ""))
- );endif
- (setq km (- km d))
- (if (= kk 1)
- (progn(setq kk 2)
- (setq d d2))
- (progn(setq kk 1)
- (setq d d1));endprogn
- );endif
- (setq pc am)
- );endwhile
- (if (= kk 1)
- (progn(command "pline" pc dc ""))
- );endif
- (setq d (- d km))
- (setq pc dc)
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq DC (nth i lt))
- );endwhile
- ));IF LT IS NULL BLOCK
- (setq en (car (entsel "\n请选择实线边:")));绘实线边
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setvar "PLINEWID" width) ;;;
- (setq Pt (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (command "pline" pt)
- (while (/= pt nil)
- (setq i (+ 1 i))
- (setq pt (nth i lt))
- (command pt)
- );endwhile
- (command "")
- );endprogn
- );endif
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setvar "PLINEWID" 0)
- ;(command "layer" "f" la "" );;根据需要选择此行
- (undo_end)
- );endfunction
-
- ;;;;;;
- (defun c:642b ();乡村路642b:不依比例--虚线--实线8,空格2,线宽0.3
- (undo_begin)
- (setvar "cmdecho" 0)
- (if (= jieshi "0")
- (progn
- (SETQ enn '((-4 . "<OR")
- (0 . "POLYLINE")
- (0 . "LWPOLYLINE")
- (-4 . "OR>"))
- )
- (prompt "\n选择基线: ")
- (setq SsSel (ssget enn))
- )
- (progn
- (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "4422"))))
- ))
- (setq len (sslength SsSel))
- (setq t 0)
- (setq en (ssname SsSel t))
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
- (while (< t len)
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setq d1 (* 0.008 wwblc))
- (setq d2 (* 0.002 wwblc))
- (setq width (* 0.0003 wwblc)) ;;;注意线宽
- (setvar "PLINEWID" width);;;
- (setq D D1)
- (setq PC (nth i lt))
- (setq i (+ 1 I))
- (setq DC (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (setq kk 1)
- (WHILE (/= dc nil)
- (setq km (distance pc dc))
- (setq ang (angle pc dc))
- (while (>= km d)
- (setq am (polar pc ang d))
- (if (= kk 1)
- (progn(command "pline" pc am ""))
- );endif
- (setq km (- km d))
- (if (= kk 1)
- (progn(setq kk 2)
- (setq d d2))
- (progn(setq kk 1)
- (setq d d1));endprogn
- );endif
- (setq pc am)
- );endwhile
- (if (= kk 1)
- (progn(command "pline" pc dc ""))
- );endif
- (setq d (- d km))
- (setq pc dc)
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq DC (nth i lt))
- );endwhile
- ));IF LT IS NULL BLOCK
- (setq t (+ 1 t))
- (setq en (ssname SsSel t))
- );endwhile
- (setvar "PLINEWID" 0)
- (command "layer" "f" la "");根据需要选择此行
- (undo_end)
- );endfunction
-
- ;;;;;;
- (defun c:643 () ;小路643:虚线--实线4,空格1,线宽0.3
- (undo_begin)
- (setvar "cmdecho" 0)
- (if (= jieshi "0")
- (progn
- (SETQ enn '((-4 . "<OR")
- (0 . "POLYLINE")
- (0 . "LWPOLYLINE")
- (-4 . "OR>"))
- )
- (prompt "\n选择基线: ")
- (setq SsSel (ssget enn))
- )
- (progn
- (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "4430"))))
- ))
- (setq len (sslength SsSel))
- (setq t 0)
- (setq en (ssname SsSel t))
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
- (while (< t len)
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setq d1 (* 0.004 wwblc))
- (setq d2 (* 0.001 wwblc))
- (setq width (* 0.0003 wwblc)) ;;;注意线宽
- (setvar "PLINEWID" width);;;
- (setq D D1)
- (setq PC (nth i lt))
- (setq i (+ 1 I))
- (setq DC (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (setq kk 1)
- (WHILE (/= dc nil)
- (setq km (distance pc dc))
- (setq ang (angle pc dc))
- (while (>= km d)
- (setq am (polar pc ang d))
- (if (= kk 1)
- (progn(command "pline" pc am ""))
- );endif
- (setq km (- km d))
- (if (= kk 1)
- (progn(setq kk 2)
- (setq d d2))
- (progn(setq kk 1)
- (setq d d1));endprogn
- );endif
- (setq pc am)
- );endwhile
- (if (= kk 1)
- (progn(command "pline" pc dc ""))
- );endif
- (setq d (- d km))
- (setq pc dc)
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq DC (nth i lt))
- );endwhile
- ));IF LT IS NULL BLOCK
- (setq t (+ 1 t))
- (setq en (ssname SsSel t))
- );endwhile
- (setvar "PLINEWID" 0)
- (command "layer" "f" la "");根据需要选择此行
- (undo_end)
- );endfunction
-
- ;;;;;;
- (defun c:1011c () ;间曲线1011c:虚线--实线6,空格1,线宽0.15
- (undo_begin)
- (setvar "cmdecho" 0)
- (if (= jieshi "0")
- (progn
- (SETQ enn '((-4 . "<OR")
- (0 . "POLYLINE")
- (0 . "LWPOLYLINE")
- (-4 . "OR>"))
- )
- (prompt "\n选择基线: ")
- (setq SsSel (ssget enn))
- )
- (progn
- (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "8130"))))
- ))
- (setq len (sslength SsSel))
- (setq t 0)
- (setq en (ssname SsSel t))
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
- (while (< t len)
- (setq lt (ZuoBiao1 en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setq d1 (* 0.006 wwblc))
- (setq d2 (* 0.001 wwblc))
- (setq width 0) ;;;注意线宽
- (setvar "PLINEWID" width);;;
- (setq D D1)
- (setq PC (nth i lt))
- (setq i (+ 1 I))
- (setq DC (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (setq kk 1)
- (WHILE (/= dc nil)
- (setq km (distance pc dc))
- (setq ang (angle pc dc))
- (while (>= km d)
- (setq am (polar pc ang d))
- (if (= kk 1)
- (progn(command "pline" pc am ""))
- );endif
- (setq km (- km d))
- (if (= kk 1)
- (progn(setq kk 2)
- (setq d d2));endpron
- (progn(setq kk 1)
- (setq d d1));endprogn
- );endif
- (setq pc am)
- );endwhile
- (if (= kk 1)
- (progn(command "pline" pc dc ""))
- );endif
- (setq d (- d km))
- (setq pc dc)
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq DC (nth i lt))
- );endwhile
- ));IF LT IS NULL BLOCK
- (setq t (+ 1 t))
- (setq en (ssname SsSel t))
- );endwhile
- (setvar "PLINEWID" 0)
- (command "layer" "f" la "");根据需要选择此行
- (undo_end)
- );endfunction
-
-
- ;;;;;;
- (defun c:641 () ;大车路641:虚线边--实线8,虚线2,线宽0.2
- (undo_begin)
- (setq en (car(entsel "请选择虚线边:")));绘虚线边
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setq d1 (* 0.008 wwblc))
- (setq d2 (* 0.002 wwblc))
- (setq width (* 0.0002 wwblc)) ;;;注意线宽
- (setvar "PLINEWID" width);;;
- (setq D D1)
- (setq PC (nth i lt))
- (setq i (+ 1 I))
- (setq DC (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (setq kk 1)
- (WHILE (/= dc nil)
- (setq km (distance pc dc))
- (setq ang (angle pc dc))
- (while (>= km d)
- (setq am (polar pc ang d))
- (if (= kk 1)
- (progn(command "pline" pc am ""))
- );endif
- (setq km (- km d))
- (if (= kk 1)
- (progn(setq kk 2)
- (setq d d2))
- (progn(setq kk 1)
- (setq d d1));endprogn
- );endif
- (setq pc am)
- );endwhile
- (if (= kk 1)
- (progn(command "pline" pc dc ""))
- );endif
- (setq d (- d km))
- (setq pc dc)
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq DC (nth i lt))
- );endwhile
- (setq en (car (entsel "\n请选择实线边:")));绘实线边
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setvar "PLINEWID" width) ;;;
- (setq Pt (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (command "pline" pt)
- (while (/= pt nil)
- (setq i (+ 1 i))
- (setq pt (nth i lt))
- (command pt)
- );endwhile
- (command "")
- );endprogn
- );endif
- ));IF LT IS NULL BLOCK
- (setvar "PLINEWID" 0)
- ;(command "layer" "f" la "");根据需要选择此行
- (undo_end)
- );endfunction
-
- ;;;;;;;;;;;;陡崖子程序
- (defun dy (insertp angle)
-
- (setq ip insertp)
- (setq angl (+ 1.570796 angle))
- (setvar "PLINEWID" 0)
-
- (setq l1 (* 0.0015 wwblc))
- (setq l2 (* 0.001 wwblc))
- (setq l3 (* 0.0005 wwblc))
- (setq dis (* 0.001 wwblc))
-
- (setq ip1 (polar ip angl dis)
- ip2 (polar ip angl (* 2 dis))
- ip3 (polar ip angl (* 3 dis))
- ip4 (polar ip angl (* 4 dis))
- );endsetq
-
- (setq dis1 (polar ip1 (+ (/ (* PI 3.0) 2.0) angl) l1)
- dis2 (polar ip2 (+ (/ (* PI 3.0) 2.0) angl) l2)
- dis3 (polar ip3 (+ (/ (* PI 3.0) 2.0) angl) l3)
- );endsetq
-
- (command "pline" ip ip4 "")
- (command "pline" ip1 dis1 "")
- (command "pline" ip2 dis2 "")
- (command "pline" ip3 dis3 "")
-
- );endfunction
-
-
- ;;;;;
- (defun c:1033b () ; 石质的陡崖1033b
- (undo_begin)
- (setvar "cmdecho" 0)
- (setvar "aunits" 3)
- (if (= jieshi "0")
- (progn
- (SETQ enn '((-4 . "<OR")
- (0 . "POLYLINE")
- (0 . "LWPOLYLINE")
- (-4 . "OR>"))
- )
- (prompt "\n选择基线: ")
- (setq SsSel (ssget enn))
- )
- (progn
- (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "8432"))))
- ))
- (setq len (sslength SsSel))
- (setq t 0)
- (setq en (ssname SsSel t))
- (while (< t len)
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setq d1 (* 0.002 2000))
- (setq S (* 0.001 2000))
- ;(setq width (* 0.00015 wwblc)) ;;;注意线宽
- ;(setvar "PLINEWID" width);;;
- (setvar "PLINEWID" 0)
- (setq d d1)
- (setq PC (nth i lt))
- (setq i (+ 1 I))
- (setq DC (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (WHILE (/= dc nil)
- (command "pline" pc dc "")
- (setq km (distance pc dc))
- (setq ang (angle pc dc))
- (while (>= km d)
- (setq am (polar pc ang d))
- (dy am ang)
- (setq km (- km d))
- (setq d d1)
- (setq pc am)
- );endwhile
- (setq d (- d km))
- (setq pc dc)
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq DC (nth i lt))
- );endwhile
- ));IF LT IS NULL BLOCK
- (setq t (+ 1 t))
- (setq en (ssname SsSel t))
- );endwhile
- (setvar "aunits" 0)
- (setvar "PLINEWID" 0)
- (command "layer" "f" la "");根据需要选择此行
- (undo_end)
- );endfunction
- ;;;;;
- (defun c:1033a () ; 土质的陡崖1033a
- (undo_begin)
- (setvar "cmdecho" 0)
- (setvar "aunits" 3)
- (if (= jieshi "0")
- (progn
- (SETQ enn '((-4 . "<OR")
- (0 . "POLYLINE")
- (0 . "LWPOLYLINE")
- (-4 . "OR>"))
- )
- (prompt "\n选择基线: ")
- (setq SsSel (ssget enn))
- )
- (progn
- (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "8431"))))
- ))
- (setq len (sslength SsSel))
- (setq t 0)
- (if (/= sssel nil)
- (progn
- (while (< t len)
- (setq en (ssname SsSel t))
- (a1033a_a en)
- (setq t (+ t 1))
- )
- ))
- (setvar "aunits" 0)
- (undo_end)
- )
- (defun a1033a_a (en) ;将选定的曲线解释成坎状符号kan
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setq d1 (* 0.002 wwblc))
- (setq S (* 0.001 wwblc))
- ;(setq width (* 0.00015 wwblc)) ;;;注意线宽
- ;(setvar "PLINEWID" width);;;
- ( setvar "PLINEWID" 0)
- (setq d d1)
- (setq PC (nth i lt))
- (setq i (+ 1 I))
- (setq DC (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (WHILE (/= dc nil)
- (command "pline" pc dc "")
- (setq km (distance pc dc))
- (setq ang (angle pc dc))
- (while (>= km d)
- (setq am (polar pc ang d))
- (setq an (polar am (+ ang 1.570796) s))
- (command "pline" am an "")
- (setq km (- km d))
- (setq d d1)
- (setq pc am)
- );endwhile
- (setq d (- d km))
- (setq pc dc)
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq DC (nth i lt))
- );endwhile
- ));IF LT IS NULL BLOCK
- (setvar "PLINEWID" 0)
- ;(command "layer" "f" la "");根据需要选择此行
- );endfunction
- ;;;;
- (defun c:1161 () ;地类界1161
- (undo_begin)
- (setvar "cmdecho" 0)
- (if (= jieshi "0")
- (progn
- (SETQ enn '((-4 . "<OR")
- (0 . "POLYLINE")
- (0 . "LWPOLYLINE")
- (-4 . "OR>"))
- )
- (prompt "\n选择基线: ")
- (setq SsSel (ssget enn))
- )
- (progn
- (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "9610"))))
- ))
- (setq len (sslength SsSel))
- (setq t 0)
- (setq en (ssname SsSel t))
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
- (while (< t len)
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setq d1 (* 0.0016 wwblc))
- (setq rad (* 0.0003 wwblc))
- (setq D D1)
- (setq PC (nth i lt))
- (setq i (+ 1 I))
- (setq DC (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (WHILE (/= dc nil)
- (setq km (distance pc dc))
- (setq ang (angle pc dc))
- (while (>= km d)
- (setq am (polar pc ang d))
- (command "donut" "0" rad am "")
- (setq km (- km d))
- (setq d d1)
- (setq pc am)
- );endwhile
- (setq d (- d km))
- (setq pc dc)
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq DC (nth i lt))
- );endwhile
- ));IF LT IS NULL BLOCK
- (setq t (+ 1 t))
- (setq en (ssname SsSel t))
- );endwhile
- (command "layer" "f" la "");根据需要选择此行
- (undo_end)
- );endfunction
- ;;;;;
- (defun c:1042a () ;未加固的陡坎1042a
- (undo_begin)
- (setvar "cmdecho" 0)
- (setvar "aunits" 3)
- (if (= jieshi "0")
- (progn
- (SETQ enn '((-4 . "<OR")
- (0 . "POLYLINE")
- (0 . "LWPOLYLINE")
- (-4 . "OR>"))
- )
- (prompt "\n选择基线: ")
- (setq SsSel (ssget enn))
- )
- (progn
- (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "8521"))))
- ))
- (setq len (sslength SsSel))
- (setq t 0)
- (setq en (ssname SsSel t))
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
- (while (< t len)
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setq d1 (* 0.002 wwblc))
- (setq S (* 0.001 wwblc))
- ( setvar "PLINEWID" 0)
- (setq d d1)
- (setq PC (nth i lt))
- (setq i (+ 1 I))
- (setq DC (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (WHILE (/= dc nil)
- (command "pline" pc dc "")
- (setq km (distance pc dc))
- (setq ang (angle pc dc))
- (while (>= km d)
- (setq am (polar pc ang d))
- (setq an (polar am (+ ang 1.570796) s))
- (command "pline" am an "")
- (setq km (- km d))
- (setq d d1)
- (setq pc am)
- );endwhile
- (setq d (- d km))
- (setq pc dc)
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq DC (nth i lt))
- );endwhile
- ));IF LT IS NULL BLOCK
- (setq t (+ 1 t))
- (setq en (ssname SsSel t))
- );endwhile
- (setvar "PLINEWID" 0)
- (command "layer" "f" la "");根据需要选择此行
- (setvar "aunits" 0)
- (undo_end)
- );endfunction
-
- ;;;;;
- (defun c:1042b() ;已加固的陡坎1042b
- (undo_begin)
- (setvar "cmdecho" 0)
- (setvar "aunits" 3)
- (if (= jieshi "0")
- (progn
- (SETQ enn '((-4 . "<OR")
- (0 . "POLYLINE")
- (0 . "LWPOLYLINE")
- (-4 . "OR>"))
- )
- (prompt "\n选择基线: ")
- (setq SsSel (ssget enn))
- )
- (progn
- (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "8522"))))
- ))
- (setq len (sslength SsSel))
- (setq t 0)
- (setq en (ssname SsSel t))
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
- (while (< t len)
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setq d1 (* 0.004 wwblc))
- (setq S (* 0.001 wwblc))
- (setq s1 (* 0.002 wwblc))
- (setq s2 (* 0.001 wwblc))
- (setq rad (* 0.0003 wwblc))
- ;(setq width (* 0.00015 wwblc)) ;;;注意线宽
- ;(setvar "PLINEWID" width);;;
- (setvar "PLINEWID" 0)
- (setq d d1)
- (setq PC (nth i lt))
- (setq i (+ 1 I))
- (setq DC (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (WHILE (/= dc nil)
- (command "pline" pc dc "")
- (setq km (distance pc dc))
- (setq ang (angle pc dc))
- (while (>= km d)
- (setq am (polar pc ang d))
- (setq an (polar am (+ ang 1.570796) s))
- (setq am1 (polar am ang s1))
- (setq an1 (polar am1 (+ ang 1.570796) s2))
- (command "pline" am an "")
- (command "donut" "0" rad an1 "")
- (setq km (- km d))
- (setq d d1)
- (setq pc am)
- );endwhile
- (setq d (- d km))
- (setq pc dc)
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq DC (nth i lt))
- );endwhile
- ));IF LT IS NULL BLOCK
- (setq t (+ 1 t))
- (setq en (ssname SsSel t))
- );endwhile
- (setvar "PLINEWID" 0)
- (command "layer" "f" la "");根据需要选择此行
- (setvar "aunits" 0)
- (undo_end)
- );endfunction
-
- ;;;;;
- (defun c:1043() ;梯田坎1043
- (undo_begin)
- (setvar "cmdecho" 0)
- (setvar "aunits" 3)
- (if (= jieshi "0")
- (progn
- (SETQ enn '((-4 . "<OR")
- (0 . "POLYLINE")
- (0 . "LWPOLYLINE")
- (-4 . "OR>"))
- )
- (prompt "\n选择基线: ")
- (setq SsSel (ssget enn))
- )
- (progn
- (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "8530"))))
- ))
- (setq len (sslength SsSel))
- (setq t 0)
- (setq en (ssname SsSel t))
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
- (while (< t len)
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setq d1 (* 0.002 wwblc))
- (setq S (* 0.001 wwblc))
- (setvar "PLINEWID" 0)
- (setq d d1)
- (setq PC (nth i lt))
- (setq i (+ 1 I))
- (setq DC (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (WHILE (/= dc nil)
- (command "pline" pc dc "")
- (setq km (distance pc dc))
- (setq ang (angle pc dc))
- (while (>= km d)
- (setq am (polar pc ang d))
- (setq an (polar am (+ ang 1.570796) s))
- (command "pline" am an "")
- (setq km (- km d))
- (setq d d1)
- (setq pc am)
- );endwhile
- (setq d (- d km))
- (setq pc dc)
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq DC (nth i lt))
- );endwhile
- ));IF LT IS NULL BLOCK
- (setq t (+ 1 t))
- (setq en (ssname SsSel t))
- );endwhile
- (setvar "PLINEWID" 0)
- (command "layer" "f" la "");根据需要选择此行
- (setvar "aunits" 0)
- (undo_end)
- );endfunction
-
- (defun c:1035() ;冲沟1035
- (undo_begin)
- (setvar "cmdecho" 0)
- (setvar "aunits" 3)
- (if (= jieshi "0")
- (progn
- (SETQ enn '((-4 . "<OR")
- (0 . "POLYLINE")
- (0 . "LWPOLYLINE")
- (-4 . "OR>"))
- )
- (prompt "\n选择基线: ")
- (setq SsSel (ssget enn))
- )
- (progn
- (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "8450"))))
- ))
- (setq len (sslength SsSel))
- (setq t 0)
- (setq en (ssname SsSel t))
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
- (while (< t len)
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setq d1 (* 0.002 wwblc))
- (setq S (* 0.001 wwblc))
- (setvar "PLINEWID" 0)
- (setq d d1)
- (setq PC (nth i lt))
- (setq i (+ 1 I))
- (setq DC (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (WHILE (/= dc nil)
- (command "pline" pc dc "")
- (setq km (distance pc dc))
- (setq ang (angle pc dc))
- (while (>= km d)
- (setq am (polar pc ang d))
- (setq an (polar am (+ ang 1.570796) s))
- (command "pline" am an "")
- (setq km (- km d))
- (setq d d1)
- (setq pc am)
- );endwhile
- (setq d (- d km))
- (setq pc dc)
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq DC (nth i lt))
- );endwhile
- ));IF LT IS NULL BLOCK
- (setq t (+ 1 t))
- (setq en (ssname SsSel t))
- );endwhile
- (setvar "PLINEWID" 0)
- (command "layer" "f" la "");根据需要选择此行
- (setvar "aunits" 0)
- (undo_end)
- );endfunction
- ;;;;;
- (defun c:912a() ;省,自治区,直辖市已定界912a
-
- (setq ss (ssget "x" '((0 . "POLYLINE") (8 . "7130"))))
- (setq len (sslength ss))
- (setq tn 0)
- (setq en (ssname ss tn))
-
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
-
- (command "layer" "m" lla "c" "4" "" "")
-
- (while (< tn len)
-
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setq width (* 0.0006 wwblc)) ;;;注意线宽
- (setvar "PLINEWID" width);;;
- ;(setq d d1)
- (setq PC (nth i lt))
- (setq i (+ 1 I))
- (setq DC (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (setq d1 (* 0.006 wwblc))
- (setq d2 (* 0.004 wwblc))
- (setq d d1)
- (setq kk 1)
- (setq t2 (* 0.01 wwblc))
- (setq t1 (* 0.000 wwblc))
- (setq t (* 0.0073 wwblc))
- (setq yy 0)
- (setq g1 t1)
- (setq g2 t2)
- (setq g (* 0.0087 wwblc))
- (setq vv 0)
- (setq SP (nth i lt))
- (setq i (+ 1 I))
- (setq EP (nth i lt))
-
- (WHILE (/= EP nil)
- (setq ll (distance sp ep))
- (setq aa (angle sp ep))
- (setq pcy sp)
- (while (>= ll d)
- (setq pm (polar pcy aa d))
- (if (= kk 1) (progn (command "pline" pcy pm "")))
- (setq ll (- ll d))
- (if (= kk 1) (progn (setq kk 2) (setq d d2))
- (progn (setq kk 1) (setq d d1))
- )
- (setq pcy pm)
- )
- (if (= kk 1) (progn (command "pline" pcy ep "")))
- (setq d (- d ll))
-
- (setq ll (distance sp ep))
- (setq pcz sp)
- (while (>= ll t)
- (setq bm (polar pcz aa t))
- (if (= yy 1) (command "DONUT" "0" width bm ""))
- (setq ll (- ll t))
- (if (= yy 1) (progn (setq yy 0) (setq t t2))
- (progn (setq yy 1) (setq t t1))
- )
- (setq pcz bm)
- )
- (if (= yy 1) (progn (command "DONUT" "0" width pcz "")))
- (setq t (- t ll))
- (setq pcx sp)
- (setq ll (distance sp ep))
- (while (>= ll g)
- (setq cm (polar pcx aa g))
- (if (= vv 1) (command "DONUT" "0" width cm ""))
- (setq ll (- ll g))
- (if (= vv 1) (progn (setq vv 0) (setq g g2))
- (progn (setq vv 1) (setq g g1))
- )
- (setq pcx cm)
- )
- (if (= vv 1) (progn (command "DONUT" "0" width pcx "")))
- (setq g (- g ll))
- (setq sp ep)
-
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq EP (nth i lt))
- )
-
- ));IF LT IS NULL BLOCK
- (setq tn (+ 1 tn))
- (setq en (ssname ss tn))
- )
-
- (setvar "PLINEWID" 0)
- (command "layer" "f" la "");根据需要选择此行
- )
-
-
- ;;;;;
- (defun c:913a() ;自治州、地区、盟、地级市已定界913a
-
- (setq ss (ssget "x" '((0 . "POLYLINE") (8 . "7140"))))
- (setq len (sslength ss))
- (setq tn 0)
- (setq en (ssname ss tn))
-
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
-
- (command "layer" "m" lla "c" "4" "" "")
-
- (while (< tn len)
-
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setq width (* 0.0004 wwblc)) ;;;注意线宽
- (setvar "PLINEWID" width);;;
- ;(setq d d1)
- (setq PC (nth i lt))
- (setq i (+ 1 I))
- (setq DC (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (setq d1 (* 0.006 wwblc))
- (setq d2 (* 0.012 wwblc))
- (setq d d1)
- (setq kk 1)
- (setq t2 (* 0.012 wwblc))
- (setq t1 (* 0.006 wwblc))
- (setq t (* 0.008 wwblc))
- (setq yy 0)
- (setq g1 0.0)
- (setq g2 (* 0.018 wwblc))
- (setq g (* 0.016 wwblc))
- (setq ww (* 0.0004 wwblc))
- (setq vv 0)
- (setq SP (nth i lt))
- (setq i (+ 1 I))
- (setq EP (nth i lt))
-
- (WHILE (/= EP nil)
- (SETQ ll (distance sp ep))
- (setq aa (angle sp ep))
- (setq pcy sp)
- (while (>= ll d)
- (setq pm (polar pcy aa d))
- (if (= kk 1) (progn (command "pline" pcy "w" ww ww pm "w" 0 0 "")))
- (setq ll (- ll d))
- (if (= kk 1) (progn (setq kk 2) (setq d d2))
- (progn (setq kk 1) (setq d d1))
- )
- (setq pcy pm)
- )
- (if (= kk 1) (progn (command "pline" pcy "w" ww ww ep "w" 0 0 "")))
- (setq d (- d ll))
-
- (setq ll (distance sp ep))
- (setq pcz sp)
- (while (>= ll t)
- (setq bm (polar pcz aa t))
- (if (= yy 1) (command "pline" pcz "w" ww ww bm "w" 0 0 ""))
- (setq ll (- ll t))
- (if (= yy 1) (progn (setq yy 0) (setq t t2))
- (progn (setq yy 1) (setq t t1))
- )
- (setq pcz bm)
- )
- (if (= yy 1) (progn (command "pline" pcz "w" ww ww ep "w" 0 0 "")))
- (setq t (- t ll))
- (setq pcx sp)
- (setq ll (distance sp ep))
- (while (>= ll g)
- (setq cm (polar pcx aa g))
- (if (= vv 1) (command "donut" 0 width cm ""))
- (setq ll (- ll g))
- (if (= vv 1) (progn (setq vv 0) (setq g g2))
- (progn (setq vv 1) (setq g g1))
- )
- (setq pcx cm)
- )
- (if (= vv 1) (progn (command "donut" 0 width pcx "")))
- (setq g (- g ll))
- (setq sp ep)
-
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq EP (nth i lt))
- )
-
- ));IF LT IS NULL BLOCK
- (setq tn (+ 1 tn))
- (setq en (ssname ss tn))
- )
-
- (setvar "PLINEWID" 0)
- (command "layer" "f" la "");根据需要选择此行
- )
-
-
-
- ;;;;;
- (defun c:914a() ;县、自治县、旗、县级市已定界914a
-
- (setq ss (ssget "x" '((0 . "POLYLINE") (8 . "7150"))))
- (setq len (sslength ss))
- (setq tn 0)
- (setq en (ssname ss tn))
-
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
-
- (command "layer" "m" lla "c" "4" "" "")
-
- (while (< tn len)
-
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setq width (* 0.0003 wwblc)) ;;;注意线宽
- (setvar "PLINEWID" width);;;
- ;(setq d d1)
- (setq PC (nth i lt))
- (setq i (+ 1 I))
- (setq DC (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (setq d1 (* 0.006 wwblc))
- (setq d2 (* 0.004 wwblc))
- (setq d d1)
- (setq kk 1)
- (setq t1 (* 0.01 wwblc))
- (setq t2 0.0)
- (setq t (* 0.008 wwblc))
- (setq yy 0)
- (setq SP (nth i lt))
- (setq i (+ 1 I))
- (setq EP (nth i lt))
- (WHILE (/= EP nil)
- (SETQ ll (distance sp ep))
- (setq aa (angle sp ep))
- (setq pcy sp)
- (while (>= ll d)
- (setq am (polar pcy aa d))
- (if (= kk 1) (progn (command "pline" pcy am "")))
- (setq ll (- ll d))
- (if (= kk 1) (progn (setq kk 2) (setq d d2))
- (progn (setq kk 1) (setq d d1))
- )
- (setq pcy am)
- )
- (if (= kk 1) (progn (command "pline" pcy ep "")))
- (setq d (- d ll))
-
- (setq ll (distance sp ep))
- (while (>= ll t)
- (setq am (polar sp aa t))
- (if (= yy 1) (command "DONUT" "0" WIdth am ""))
- (setq ll (- ll t))
- (if (= yy 1) (progn (setq yy 0) (setq t t1))
- (progn (setq yy 1) (setq t t2))
- )
- (setq sp am)
- )
- (if (= yy 1) (progn (command "DONUT" "0" WIDth sp "")))
- (setq t (- t ll))
- (setq sp ep)
-
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq EP (nth i lt))
- )
-
- ));IF LT IS NULL BLOCK
- (setq tn (+ 1 tn))
- (setq en (ssname ss tn))
- )
-
- (setvar "PLINEWID" 0)
- (command "layer" "f" la "");根据需要选择此行
- )
-
- ;;;;;
- (defun c:915a() ;乡、镇已定界915a
-
- (setq ss (ssget "x" '((0 . "POLYLINE") (8 . "7160"))))
- (setq len (sslength ss))
- (setq tn 0)
- (setq en (ssname ss tn))
-
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
-
- (while (< tn len)
-
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setq width (* 0.0002 wwblc)) ;;;注意线宽
- (setvar "PLINEWID" width);;;
-
- (setq dd 1)
- (setq d (* wwblc 0.006))
- (setq d1 (* wwblc 0.006))
- (setq d2 (* wwblc 0.012))
- (setq tt 0)
- (setq t (* wwblc 0.008))
- (setq t1 (* wwblc 0.006))
- (setq t2 (* wwblc 0.012))
- (setq gg 0)
- (setq g (* wwblc 0.015333))
- (setq g1 0.0)
- (setq g2 (* wwblc 0.018))
- (setq xx 0)
- (setq x (* wwblc 0.016666))
- (setq x1 0.0)
- (setq x2 (* wwblc 0.018))
- (setq sp(nth i lt))
- (setq i (+ 1 I))
- (setq ep (nth i lt))
-
- (WHILE (/= EP nil)
- (setq ll (distance sp ep))
- (setq aa (angle sp ep))
- (setq pcy sp)
- (while (>= ll d)
- (setq pm (polar pcy aa d))
- (if (= dd 1) (progn (command "pline" pcy pm "")))
- (setq ll (- ll d))
- (if (= dd 1) (progn (setq dd 0) (setq d d2))
- (progn (setq dd 1) (setq d d1))
- );endif
- (setq pcy pm)
- );endwhile
- (if (= dd 1) (progn (command "pline" pcy ep "")))
- (setq d (- d ll))
-
- (setq ll (distance sp ep))
- (setq pcz sp)
- (while (>= ll t)
- (setq bm (polar pcz aa t))
- (if (= tt 1) (command "pline" pcz bm ""))
- (setq ll (- ll t))
- (if (= tt 1) (progn (setq tt 0) (setq t t2))
- (progn (setq tt 1) (setq t t1))
- );endwhile
- (setq pcz bm)
- )
- (if (= tt 1) (progn (command "pline" pcz ep "")))
- (setq t (- t ll))
- (setq pcx sp)
- (setq ll (distance sp ep))
- (while (>= ll g)
- (setq cm (polar pcx aa g))
- (if (= gg 1) (command "DONUT" "0" WIDth cm ""))
- (setq ll (- ll g))
- (if (= gg 1) (progn (setq gg 0) (setq g g2))
- (progn (setq gg 1) (setq g g1))
- )
- (setq pcx cm)
- )
- (if (= gg 1) (progn (command "DONUT" "0" width pcx "")))
- (setq g (- g ll))
- (setq pcn sp)
- (setq ll (distance sp ep))
- (while (>= ll x)
- (setq dm (polar pcn aa x))
- (if (= xx 1) (command "DONUT" "0" width dm ""))
- (setq ll (- ll x))
- (if (= xx 1) (progn (setq xx 0) (setq x x2))
- (progn (setq xx 1) (setq x x1))
- );endif
- (setq pcn dm)
- );endwhile
- (if (= xx 1) (progn (command "DONUT" "0" width pcn "")))
- (setq x (- x ll))
- (setq sp ep)
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq EP (nth i lt))
- )
- ));IF LT IS NULL BLOCK
- (setq tn (+ 1 tn))
- (setq en (ssname ss tn))
- )
-
- (setvar "PLINEWID" 0)
- (command "layer" "f" la "");根据需要选择此行
- );endfunction
-
- ;;;;;;;
- (defun c:846a() ;土堤846a
- (undo_begin)
- (setvar "cmdecho" 0)
- (setvar "aunits" 3)
- (if (= jieshi "0")
- (progn
- (SETQ enn '((-4 . "<OR")
- (0 . "POLYLINE")
- (0 . "LWPOLYLINE")
- (-4 . "OR>"))
- )
- (prompt "\n选择基线: ")
- (setq SsSel (ssget enn))
- )
- (progn
- (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "6460"))))
- ))
- (setq len (sslength SsSel))
- (setq t 0)
- (setq en (ssname SsSel t))
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
- (while (< t len)
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setq d1 (* 0.002 2000))
- (setq S (* 0.001 2000))
- ;(setq width (* 0.00015 wwblc)) ;;;注意线宽
- ;(setvar "PLINEWID" width);;;
- (setvar "PLINEWID" 0)
- (setq d d1)
- (setq PC (nth i lt))
- (setq i (+ 1 I))
- (setq DC (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (WHILE (/= dc nil)
- (command "pline" pc dc "")
- (setq km (distance pc dc))
- (setq ang (angle pc dc))
- (while (>= km d)
- (setq am (polar pc ang d))
- (setq an (polar am (+ ang 1.570796) s))
- (command "pline" am an "")
- (setq km (- km d))
- (setq d d1)
- (setq pc am)
- );endwhile
- (setq d (- d km))
- (setq pc dc)
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq DC (nth i lt))
- );endwhile
-
- ));IF LT IS NULL BLOCK
- (setq t (+ 1 t))
- (setq en (ssname SsSel t))
- );endwhile
- (setvar "aunits" 0)
- (setvar "PLINEWID" 0)
- (command "layer" "f" la "");根据需要选择此行
- (undo_end)
- );endfunction
-
- ;;;;;
- (defun c:846b() ;;垅846b
- (undo_begin)
- (setvar "cmdecho" 0)
- (setvar "aunits" 3)
- (if (= jieshi "0")
- (progn
- (SETQ enn '((-4 . "<OR")
- (0 . "POLYLINE")
- (0 . "LWPOLYLINE")
- (-4 . "OR>"))
- )
- (prompt "\n选择基线: ")
- (setq SsSel (ssget enn))
- )
- (progn
- (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "6461"))))
- ))
- (setq len (sslength SsSel))
- (setq t 0)
- (setq en (ssname SsSel t))
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
- (while (< t len)
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setq d1 (* 0.002 2000));;注意这两行
- (setq d2 (* 0.0006 2000));;
- (setq width (* 0.0002 wwblc)) ;;;注意线宽
- (setvar "PLINEWID" width) ;;;
- (setq D D1)
- (setq PC (nth i lt))
- (setq i (+ 1 I))
- (setq DC (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (WHILE (/= dc nil)
- (command "pline" pc dc "")
- (setq km (distance pc dc))
- (setq ang (angle pc dc))
- (while (>= km d)
- (setq am (polar pc ang d))
- (setq an (polar am (+ ang 1.570796) d2))
- (setq al (polar am (- ang 1.570796) d2))
- (command "pline" an al "")
- (setq km (- km d))
- (setq d d1)
- (setq pc am)
- );endwhile
- (setq d (- d km))
- (setq pc dc)
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq DC (nth i lt))
- );endwhile
- ));IF LT IS NULL BLOCK
- (setq t (+ 1 t))
- (setq en (ssname SsSel t))
- );endwhile
- (setvar "PLINEWID" 0)
- (command "layer" "f" la "");;根据需要选择此行
- (setvar "aunits" 0)
- (undo_end)
- );endfunction
-
- ;;;;;;
- (defun c:733() ;地下管道733:虚线--实线4,空格1,线宽0.15
- (undo_begin)
- (setvar "cmdecho" 0)
- (if (= jieshi "0")
- (progn
- (SETQ enn '((-4 . "<OR")
- (0 . "POLYLINE")
- (0 . "LWPOLYLINE")
- (-4 . "OR>"))
- )
- (prompt "\n选择基线: ")
- (setq SsSel (ssget enn))
- )
- (progn
- (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "5312"))))
- ))
- (if (/= SsSel nil)(a733_a sssel))
- (undo_end)
- )
- (defun a733_a(SsSel)
- (setq len (sslength SsSel))
- (setq t 0)
- (setq en (ssname SsSel t))
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
- (while (< t len)
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setq d1 (* 0.004 wwblc))
- (setq d2 (* 0.001 wwblc))
- (setvar "PLINEWID" 0)
- (setq D D1)
- (setq PC (nth i lt))
- (setq i (+ 1 I))
- (setq DC (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (setq kk 1)
- (WHILE (/= dc nil)
-
- (setq km (distance pc dc))
- (setq ang (angle pc dc))
- (while (>= km d)
- (setq am (polar pc ang d))
- (if (= kk 1)
- (progn(command "pline" pc am ""))
- );endif
- (setq km (- km d))
- (if (= kk 1)
- (progn(setq kk 2)
- (setq d d2))
- (progn(setq kk 1)
- (setq d d1))
- );endif
- (setq pc am)
- );endwhile
- (if (= kk 1)
- (progn(command "pline" pc dc ""))
- );endif
-
- (setq d (- d km))
- (setq pc dc)
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq DC (nth i lt))
- );endwhile
- ));IF LT IS NULL BLOCK
- (setq t (+ 1 t))
- (setq en (ssname SsSel t))
- );endwhile
- (setvar "PLINEWID" 0)
- (command "layer" "f" la "");根据需要选择此行
- );endfunction
-
- ;;;;;;;;;;
- (defun c:444() ;栅栏、栏杆444
- (undo_begin)
- (if (= jieshi "1")
- (PROGN
- (setq ss (ssget "x" '((-4 . "<OR")(0 . "POLYLINE")(0 . "LWPOLYLINE")(-4 . "OR>") (8 . "2450"))))
- (if (= ss nil)(PROGN(print "找不到 2450 !")(exit)))
- (setq len (sslength ss))
- (setq t 0)
- (setq en (ssname ss t))
- )
- (PROGN
- (setq en(car (entsel "\n选择基线:")))
- (setq len 1)
- (setq t 0)
- ));endif
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
- (while (< t len)
- (setq lt (get-line-list en))
- (setq flag nil)
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setq d1 (* 0.009 2000));;注意这两行
- (setq d2 (* 0.001 2000));;
- (setvar "PLINEWID" 0)
- (setq D D1)
- (setq PC (nth i lt))
- (setq i (+ 1 I))
- (setq DC (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (setq kk 1)
- (WHILE (/= dc nil)
- (setq km (distance pc dc))
- (setq ang (angle pc dc))
- (while (>= km d)
- (setq am (polar pc ang d))
- (if (= kk 1)
- (progn(command "pline" pc am ""))
- );endif
- (setq km (- km d))
- (if (= kk 1)
- (progn(setq kk 2)
- (setq d d2))
- (progn(setq kk 1)
- (setq d d1));endprogn
- );endif
- (setq pc am)
- );endwhile
- (if (= kk 1)
- (progn(command "pline" pc dc ""))
- );endif
- (setq d (- d km))
- (setq pc dc)
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq DC (nth i lt))
- );endwhile
- (setq i 0)
- (setq d1 (* 0.005 wwblc))
- (setq S (* 0.001 wwblc))
- (setq rad (* 0.0005 wwblc))
- ( setvar "PLINEWID" 0)
- (setq d d1)
- (setq PC (nth i lt))
- (setq i (+ 1 I))
- (setq DC (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (WHILE (/= dc nil)
- (setq km (distance pc dc))
- (setq ang (angle pc dc))
- (while (>= km d)
- (setq am (polar pc ang (- d (/ d2 2))))
- (setq an (polar am (+ ang 1.570796) s))
- (cond
- ((= flag nil) (progn (command "pline" am an "") (setq flag 1)))
- ((= flag 1) (progn (command "circle" am rad) (setq flag nil)))
- )
- (setq km (- km d))
- (setq d d1)
- (setq pc am)
- );endwhile
- (setq d (- d km))
- (setq pc dc)
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq DC (nth i lt))
- );endwhile
- )
- );IF LT IS NULL BLOCK
- (setq t (+ 1 t))
- (if (= jieshi "1")(setq en (ssname ss t)))
- );endwhile
- (setvar "PLINEWID" 0)
- (command "layer" "f" la "");根据需要选择此行
- (undo_end)
- );endfunction
-
- ;;;;地面上的输电线
- (defun c:711a()
- (undo_begin)
- (setvar "cmdecho" 0)
- (setvar "aunits" 3)
- (if (= jieshi "0")
- (progn
- (SETQ enn '((-4 . "<OR")
- (0 . "POLYLINE")
- (0 . "LWPOLYLINE")
- (-4 . "OR>"))
- )
- (prompt "\n选择基线�? ")
- (setq sssel (ssget enn))
- )
- (progn
- (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>") (8 . "5111"))))
- )
- )
- (if (/= SsSel nil)
- (progn
- (setq SsLen (sslength SsSel))
- (setq T 0)
- (setq EnName (ssname SsSel T))
- (setq EnList (entget EnName))
- (setq EnLa (cdr (assoc 8 EnList)))
- (setq EnNewLa (strcat EnLa "_sym"))
- (command "layer" "m" EnNewLa "c" "4" "" "")
- (while (< T SsLen)
- (setq EnList (get-line-list EnName))
- (setq Rad (* 0.0005 wwblc))
- (setvar "plinewid" 0)
- (if (/= EnList nil)
- (progn
- (setq I 0)
- (setq FirPoint (nth I EnList))
- (setq I (+ I 1))
- (setq SecPoint (nth I EnList))
- (while (/= SecPoint nil)
- (setq Dist (distance FirPoint SecPoint))
- (setq Ang (angle FirPoint SecPoint))
- (setq AidFisP (polar FirPoint Ang Rad))
- (setq AidSecP (polar SecPoint (+ Ang PI) Rad))
- (command "pline" AidFisP AidSecP "")
- (command "insert" "711a" FirPoint (/ wwblc 1000) "" (- Ang (/ PI 2.0)))
- (command "insert" "711a" SecPoint (/ wwblc 1000) "" (- (+ Ang PI) (/ PI 2.0)))
- (setq I (+ I 1))
- (setq FirPoint SecPoint)
- (setq SecPoint (nth I Enlist))
- );end while SecPoint
- );end progn
- );end if
- (setq T (+ T 1))
- (setq EnName (ssname SsSel T))
- );end while T
- (setvar "plinewid" 0)
- (setvar "aunits" 0)
- (setvar "clayer" "0")
- (command "layer" "f" Enla "")
- )
- (prompt "\n未找到曲线!请检查层以及是否为三维线!")
- );end if SsSel
- (undo_end)
- );end 711a
- ;;;;地面上的配电线
-
- (defun c:712a()
- (undo_begin)
- (setvar "cmdecho" 0)
- (setvar "aunits" 3)
- (if (= jieshi "0")
- (progn
- (SETQ enn '((-4 . "<OR")
- (0 . "POLYLINE")
- (0 . "LWPOLYLINE")
- (-4 . "OR>"))
- )
- (prompt "\n选择基线: ")
- (setq sssel (ssget enn))
- )
- (progn
- (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>") (8 . "5121"))))
- )
- )
- (if (/= SsSel nil)
- (progn
- (setq SsLen (sslength SsSel))
- (setq T 0)
- (setq EnName (ssname SsSel T))
- (setq EnList (entget EnName))
- (setq EnLa (cdr (assoc 8 EnList)))
- (setq EnNewLa (strcat EnLa "_sym"))
- (command "layer" "m" EnNewLa "c" "4" "" "")
- (while (< T SsLen)
- (setq EnList (get-line-list EnName))
- (setq Rad (* 0.0005 wwblc))
- (setvar "plinewid" 0)
- (if (/= EnList nil)
- (progn
- (setq I 0)
- (setq FirPoint (nth I EnList))
- (setq I (+ I 1))
- (setq SecPoint (nth I EnList))
- (while (/= SecPoint nil)
- (setq Dist (distance FirPoint SecPoint))
- (setq Ang (angle FirPoint SecPoint))
- (setq AidFisP (polar FirPoint Ang Rad))
- (setq AidSecP (polar SecPoint (+ Ang PI) Rad))
- (command "pline" AidFisP AidSecP "")
- (command "insert" "712a" FirPoint (/ wwblc 1000) "" (- Ang (/ PI 2.0)))
- (command "insert" "712a" SecPoint (/ wwblc 1000) "" (- (+ Ang PI) (/ PI 2.0)))
- (setq I (+ I 1))
- (setq FirPoint SecPoint)
- (setq SecPoint (nth I Enlist))
- );end while SecPoint
- );end progn
- );end if
- (setq T (+ T 1))
- (setq EnName (ssname SsSel T))
- );end while T
- (setvar "plinewid" 0)
- (setvar "aunits" 0)
- (setvar "clayer" "0")
- (command "layer" "f" Enla "")
- )
- (prompt "\n未找到曲线!请检查层以及是否为三维线!")
- );end if SsSel
- (undo_end)
- );end 712a
-
- ;;;;地面上的通讯线
-
- (defun c:72a()
- (undo_begin)
- (setvar "cmdecho" 0)
- (setvar "aunits" 3)
- (if (= jieshi "0")
- (progn
- (SETQ enn '((-4 . "<OR")
- (0 . "POLYLINE")
- (0 . "LWPOLYLINE")
- (-4 . "OR>"))
- )
- (prompt "\n选择基线: ")
- (setq sssel (ssget enn))
- )
- (progn
- (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>") (8 . "5210"))))
- )
- )
- (if (/= SsSel nil)
- (progn
- (setq SsLen (sslength SsSel))
- (setq T 0)
- (setq EnName (ssname SsSel T))
-
- (setq EnList (entget EnName))
- (setq EnLa (cdr (assoc 8 EnList)))
- (setq EnNewLa (strcat EnLa "_sym"))
- (command "layer" "m" EnNewLa "c" "4" "" "")
-
- (while (< T SsLen)
-
- (setq EnList (get-line-list EnName))
- (setq Rad (* 0.0005 wwblc))
- (setvar "plinewid" 0)
- (if (/= EnList nil)
- (progn
- (setq I 0)
- (setq FirPoint (nth I EnList))
- (setq I (+ I 1))
- (setq SecPoint (nth I EnList))
- (while (/= SecPoint nil)
- (setq Dist (distance FirPoint SecPoint))
- (setq Ang (angle FirPoint SecPoint))
- (setq AidFisP (polar FirPoint Ang Rad))
- (setq AidSecP (polar SecPoint (+ Ang PI) Rad))
- (command "pline" AidFisP AidSecP "")
- (command "insert" "72a" FirPoint (/ wwblc 1000) "" (- Ang (/ PI 2.0)))
- (command "insert" "72a" SecPoint (/ wwblc 1000) "" (- (+ Ang PI) (/ PI 2.0)))
- (setq I (+ I 1))
- (setq FirPoint SecPoint)
- (setq SecPoint (nth I Enlist))
- );end while SecPoint
- );end progn
- );end if
- (setq T (+ T 1))
- (setq EnName (ssname SsSel T))
- );end while T
-
- (setvar "plinewid" 0)
- (setvar "aunits" 0)
- (setvar "clayer" "0")
- (command "layer" "f" Enla "")
- )
- (prompt "\n未找到曲线!请检查层以及是否为三维线!")
- );end if SsSel
- (undo_end)
- );end 72a
-
- ;;;;;;
- (defun c:Xx() ;按给定的参数绘虚线Xx
-
- (setq en (car(entsel "\n请选择虚线:")));绘虚线边
- (setq d1 (getdist "\n实线长:"))
- (setq d2 (getdist "\n空格长:"))
- (setq width (getdist "\n线宽:"))
-
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setq d1 (* d1 2.0))
- (setq d2 (* d2 2.0))
- (setq width (* width 2.0)) ;;;注意线宽
- (setvar "PLINEWID" width);;;
- (setq D D1)
- (setq PC (nth i lt))
- (setq i (+ 1 I))
- (setq DC (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (setq kk 1)
- (WHILE (/= dc nil)
-
- (setq km (distance pc dc))
- (setq ang (angle pc dc))
- (while (>= km d)
- (setq am (polar pc ang d))
-
- (if (= kk 1)
- (progn(command "pline" pc am ""))
- );endif
- (setq km (- km d))
- (if (= kk 1)
- (progn(setq kk 2)
- (setq d d2))
- (progn(setq kk 1)
- (setq d d1));endprogn
- );endif
- (setq pc am)
- );endwhile
- (if (= kk 1)
- (progn(command "pline" pc dc ""))
- );endif
-
- (setq d (- d km))
- (setq pc dc)
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq DC (nth i lt))
- );endwhile
- ));IF LT IS NULL BLOCK
- (setvar "plinewid" 0)
- );end xx
-
- (defun c:kan () ;将选定的曲线解释成坎状符号kan
- (undo_begin)
- (setvar "cmdecho" 0)
- (prompt "\n注意!!坎加在画线起点的左边!!")
-
- (setq en (car (entsel "\n选择曲线:")))
-
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
-
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setq d1 (* 0.002 wwblc))
- (setq S (* 0.001 wwblc))
- ;(setq width (* 0.00015 wwblc)) ;;;注意线宽
- ;(setvar "PLINEWID" width);;;
- ( setvar "PLINEWID" 0)
- (setq d d1)
- (setq PC (nth i lt))
- (setq i (+ 1 I))
- (setq DC (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (WHILE (/= dc nil)
- (command "pline" pc dc "")
- (setq km (distance pc dc))
- (setq ang (angle pc dc))
- (while (>= km d)
- (setq am (polar pc ang d))
- (setq an (polar am (+ ang 1.570796) s))
- (command "pline" am an "")
- (setq km (- km d))
- (setq d d1)
- (setq pc am)
- );endwhile
- (setq d (- d km))
- (setq pc dc)
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq DC (nth i lt))
- );endwhile
-
- ));IF LT IS NULL BLOCK
-
- (setvar "PLINEWID" 0)
- ;(command "layer" "f" la "");根据需要选择此行
- (undo_end)
- );endfunction
-
- ;;;;;;;;;;
- (defun c:835a () ;单线干沟835a
- (undo_begin)
- (setvar "cmdecho" 0)
- (setvar "aunits" 3)
- (if (= jieshi "0")
- (progn
- (SETQ enn '((-4 . "<OR")
- (0 . "POLYLINE")
- (0 . "LWPOLYLINE")
- (-4 . "OR>"))
- )
- (prompt "\n选择基线: ")
- (setq SsSel (ssget enn))
- )
- (progn
- (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "6341"))))
- ))
- (setq len (sslength SsSel))
- (setq t 0)
- (setq en (ssname SsSel t))
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
- (while (< t len)
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setq PC (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (SETQ WID (* 0.0003 wwblc))
- (SETVAR "PLINEWID" WID)
- (SETQ D1 (* 0.003 wwblc))
- (SETQ D2 (* 0.001 wwblc))
- (SETQ S1 (* 0.001 wwblc))
- (SETQ D (/ D1 2))
- (SETQ S S1)
- (SETQ X0 (CAR PC))
- (SETQ Y0 (CADR PC))
- (SETQ KP 1)
- (SETQ KK 0)
- (SETQ KW 1)
- (SETQ KT 1)
- (WHILE (/= KK 1)
- (IF (= KP 1)
- (PROGN (setq i (+ 1 I))(setq DC (nth i lt))
- (IF (= DC NIL)
- (PROGN(SETQ KK 1))
- (PROGN(SETQ X1 (CAR DC))
- (SETQ Y1 (CADR DC))
- ))
- ))
- (SETQ KM (DISTANCE (LIST X0 Y0) (LIST X1 Y1)))
- (IF (< KM D)
- (PROGN(SETQ D (- D KM))
- (SETQ KP 1)
-
- (IF (/= KW 3)
- (PROGN(COMMAND "PLINE" (LIST X0 Y0) (LIST X1 Y1) "")
- ))
- (SETQ X0 X1)
- (SETQ Y0 Y1)
- )
- (PROGN(SETQ HS D)
- (SETQ X (+ X0 (* HS (/ (- X1 X0) KM))))
- (SETQ Y (+ Y0 (* HS (/ (- Y1 Y0) KM))))
- (IF (/= KW 3)
- (PROGN(COMMAND "PLINE" (LIST X0 Y0) (LIST X Y) "")
- ))
- (IF (= KW 1)
- (PROGN(IF (= KT 1)
- (PROGN(SETQ XD (- X (* S (/ (- Y1 Y0) KM))))
- (SETQ YD (+ Y (* S (/ (- X1 X0) KM))))
- )
- (PROGN(SETQ XD (+ X (* S (/ (- Y1 Y0) KM))))
- (SETQ YD (- Y (* S (/ (- X1 X0) KM))))
- ))
- (setvar "plinewid" 0)
- (COMMAND "PLINE" (LIST XD YD) (LIST X Y) "")
- (setvar "plinewid" wid)
- ))
- (SETQ KW (+ KW 1))
- (IF (> KW 3)
- (PROGN(SETQ KW 1)
- (SETQ D (/ D1 2))
- (SETQ KT (+ KT 1))
- (IF (> KT 2)
- (PROGN(SETQ KT 1)
- ))
- ))
- (IF (= KW 2)
- (PROGN(SETQ D (/ D1 2))
- ))
- (IF (= KW 3)
- (PROGN(SETQ D D2)
- ))
- (SETQ X0 X)
- (SETQ Y0 Y)
- (SETQ KP 0)
- )
- )
- )
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- );end progn
- );IF LT IS NULL BLOCK
- (setq t (+ 1 t))
- (setq en (ssname SsSel t))
- );endwhile
- (setvar "PLINEWID" 0)
- (setvar "aunits" 0)
- (command "layer" "f" la "");根据需要选择此行
- (undo_end)
- );endfunction
-
- ;;;;改变给定层中注记和块的方向Gjd
-
- (defun c:Gjd ()
-
- (setvar "cmdecho" 0)
- (setvar "aunits" 3)
-
- ;(setq SsLay (getstring "\n输入层名:"))
- (setq NewAng (getangle "\n输入新角度:"))
-
- ;;;;;TEXT
- ;(setq SsSel (cons 8 SsLay))
- ;(setq SsSel (list '(0 . "TEXT") SsSel))
- ;(setq SsText (ssget "x" SsSel))
- (setq SsText (ssget "x" '((0 . "TEXT"))))
- (setq SsLen (sslength SsText))
- (setq I 0)
- (while (< I SsLen)
- (setq EnName (ssname SsText I))
- (setq EnList (entget EnName))
- (setq EnList (subst (cons 50 (- NewAng (/ PI 2.0))) (assoc 50 EnList) EnList))
- (entmod EnList)
- (setq I (+ I 1))
- )
- ;;;;;BLOCK
- ;(setq SsSel (cons 8 SsLay))
- ;(setq SsSel (list '(0 . "INSERT") SsSel))
- ;(setq SsBlock (ssget "x" SsSel))
- (setq SsBlock (ssget "x" '((0 . "INSERT"))))
- (setq SsLen (sslength SsBlock))
- (setq I 0)
- (while (< I SsLen)
- (setq EnName (ssname SsBlock I))
- (setq EnList (entget EnName))
- (setq EnList (subst (cons 50 (- NewAng (/ PI 2.0))) (assoc 50 EnList) EnList))
- (entmod EnList)
- (setq I (+ I 1))
- )
- ;;;;;
- (setvar "aunits" 0)
- )
-
- ;;;;地面上的管道732
-
- (defun c:732 ()
- (undo_begin)
- (setvar "cmdecho" 0)
- (setvar "aunits" 3)
- (if (= jieshi "0")
- (progn
- (SETQ enn '((-4 . "<OR")
- (0 . "POLYLINE")
- (0 . "LWPOLYLINE")
- (-4 . "OR>"))
- )
- (prompt "\n选择基线: ")
- (setq SsSel (ssget enn))
- )
- (progn
- (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "5311"))))
- ))
- (if (/= SsSel nil)
- (progn
- (setq SsLen (sslength SsSel))
- (setq T 0)
- (setq EnName (ssname SsSel T))
- (setq EnList (entget EnName))
- (setq EnLa (cdr (assoc 8 EnList)))
- (setq EnNewLa (strcat EnLa "_sym"))
- (command "layer" "m" EnNewLa "c" "4" "" "")
- (while (< T SsLen)
- (setq EnList (get-line-list EnName))
- (setq LenList (length EnList))
- (setq Rad (* 0.0005 wwblc))
- (setvar "plinewid" 0)
- (if (/= EnList nil)
- (progn
- (setq I 0)
- (setq FirPoint (nth I EnList))
- (setq I (+ I 1))
- (setq SecPoint (nth I EnList))
- (while (/= SecPoint nil)
- (setq Dist (distance FirPoint SecPoint))
- (setq Ang (angle FirPoint SecPoint))
- (setq AidFisP (polar FirPoint Ang Rad))
- (setq AidSecP (polar SecPoint (+ Ang PI) Rad))
- (if (= I 1) (setq AidFisP FirPoint)
- (command "circle" FirPoint Rad)
- )
- (if (= I (- LenList 1)) (setq AidSecP SecPoint))
- (command "pline" AidFisP AidSecP "")
- (setq I (+ I 1))
- (setq FirPoint SecPoint)
- (setq SecPoint (nth I Enlist))
- );end while SecPoint
- ;(command "circle" FirPoint Rad)
- );end progn
- );end if
- (setq T (+ T 1))
- (setq EnName (ssname SsSel T))
- );end while T
- (setvar "plinewid" 0)
- (setvar "aunits" 0)
- (setvar "clayer" "0")
- (command "layer" "f" Enla "")
- )
- (prompt "\n未找到曲线!请检查层以及是否为三维线!")
- );end if SsSel
- (undo_end)
- );end 732
- ;;;房屋晕线填充
- (defun c:Tc ()
-
- (setvar "cmdecho" 0)
- (setvar "aunits" 0)
- (setvar "measurement" 1)
- (setq Ang (getangle "\n测量角度:"))
- (prompt "\n选择房屋边线:")
- (setq TcScl 1)
- (setq Ang (- Ang (/ PI 4.0)))
- (command "hatch" "ansi31" TcScl Ang pause)
- (setvar "aunits" 0)
- )
-
- ;;;;;
- (defun c:1041a () ;未加固斜坡1041a
- (undo_begin)
- (setvar "cmdecho" 0)
- (setvar "aunits" 3)
- (if (= jieshi "0")
- (progn
- (SETQ enn '((-4 . "<OR")
- (0 . "POLYLINE")
- (0 . "LWPOLYLINE")
- (-4 . "OR>"))
- )
- (prompt "\n选择基线: ")
- (setq SsSel (ssget enn))
- )
- (progn
- (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "8511"))))
- ))
- (setq len (sslength SsSel))
- (setq t 0)
- (setq en (ssname SsSel t))
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
- (while (< t len)
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setq d1 (* 0.002 wwblc))
- (setq S1 (* 0.001 wwblc))
- (setq S2 (* 0.003 wwblc))
- (setvar "PLINEWID" 0)
- (setq d d1)
- (setq PC (nth i lt))
- (setq i (+ 1 I))
- (setq DC (nth i lt))
- (setq Flag 0)
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (WHILE (/= dc nil)
- (command "pline" pc dc "")
- (setq km (distance pc dc))
- (setq ang (angle pc dc))
- (while (>= km d)
- (setq am (polar pc ang d))
- (if (= Flag 0)
- (progn (setq an (polar am (+ ang 1.570796) s1))
- (setq Flag 1)
- )
- (progn (setq an (polar am (+ ang 1.570796) s2))
- (setq Flag 0)
- )
- )
- (command "pline" am an "")
- (setq km (- km d))
- (setq d d1)
- (setq pc am)
- );endwhile
- (setq d (- d km))
- (setq pc dc)
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq DC (nth i lt))
- );endwhile
- ));IF LT IS NULL BLOCK
- (setq t (+ 1 t))
- (setq en (ssname SsSel t))
- );endwhile
- (setvar "PLINEWID" 0)
- (command "layer" "f" la "");根据需要选择此行
- (setvar "aunits" 0)
- (undo_end)
- );endfunction
- (defun c:1041b () ;已加固斜坡1041b
- (undo_begin)
- (setvar "cmdecho" 0)
- (setvar "aunits" 3)
- (if (= jieshi "0")
- (progn
- (SETQ enn '((-4 . "<OR")
- (0 . "POLYLINE")
- (0 . "LWPOLYLINE")
- (-4 . "OR>"))
- )
- (prompt "\n选择基线: ")
- (setq SsSel (ssget enn))
- )
- (progn
- (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "8512"))))
- ))
- (setq len (sslength SsSel))
- (setq t 0)
- (setq en (ssname SsSel t))
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
- (while (< t len)
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setq d1 (* 0.002 wwblc))
- (setq S1 (* 0.001 wwblc))
- (setq S2 (* 0.003 wwblc))
- (setq S3 (* 0.002 wwblc))
- (setq rad (* 0.0003 wwblc))
- (setvar "PLINEWID" 0)
- (setq d d1)
- (setq PC (nth i lt))
- (setq i (+ 1 I))
- (setq DC (nth i lt))
- (setq Flag 0)
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (WHILE (/= dc nil)
- (command "pline" pc dc "")
- (setq km (distance pc dc))
- (setq ang (angle pc dc))
- (while (>= km d)
- (setq am (polar pc ang d))
- (if (= Flag 0)
- (progn (setq an (polar am (+ ang 1.570796) s1))
- (setq Flag 1)
- (setq an1 (polar am (+ ang 1.570796) s3))
- (command "donut" "0" rad an1 "")
- )
- (progn (setq an (polar am (+ ang 1.570796) s2))
- (setq Flag 0)
- )
- )
- (command "pline" am an "")
- (setq km (- km d))
- (setq d d1)
- (setq pc am)
- );endwhile
- (setq d (- d km))
- (setq pc dc)
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq DC (nth i lt))
- );endwhile
- ));IF LT IS NULL BLOCK
- (setq t (+ 1 t))
- (setq en (ssname SsSel t))
- );endwhile
- (setvar "PLINEWID" 0)
- (command "layer" "f" la "");根据需要选择此行
- (setvar "aunits" 0)
- (undo_end)
- );endfunction
-
- ;;;;架空的管道731b(不依比例尺的墩架)
-
- (defun c:731b ()
- (undo_begin)
- (setvar "cmdecho" 0)
- (setvar "aunits" 3)
- (if (= jieshi "0")
- (progn
- (SETQ enn '((-4 . "<OR")
- (0 . "POLYLINE")
- (0 . "LWPOLYLINE")
- (-4 . "OR>"))
- )
- (prompt "\n选择基线: ")
- (setq SsSel (ssget enn))
- )
- (progn
- (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "5313"))))
- ))
- (if (/= SsSel nil)
- (progn
- (setq SsLen (sslength SsSel))
- (setq T 0)
- (setq EnName (ssname SsSel T))
-
- (setq EnList (entget EnName))
- (setq EnLa (cdr (assoc 8 EnList)))
- (setq EnNewLa (strcat EnLa "_sym"))
- (command "layer" "m" EnNewLa "c" "4" "" "")
-
- (while (< T SsLen)
-
- (setq EnList (get-line-list EnName))
- (setq LenList (length EnList))
- (setvar "plinewid" 0)
- (if (/= EnList nil)
- (progn
- (setq I 0)
- (setq FirPoint (nth I EnList))
- (setq I (+ I 1))
- (setq SecPoint (nth I EnList))
- (while (/= SecPoint nil)
- (setq Dist (distance FirPoint SecPoint))
- (setq Ang (angle FirPoint SecPoint))
- (setq AidFisP (polar FirPoint Ang 0))
- (setq AidSecP (polar SecPoint (+ Ang PI) 0))
- (if (= I 1) (setq AidFisP FirPoint)
- (command "insert" "731b" FirPoint (/ wwblc 1000) "" Ang)
- )
- (if (= I (- LenList 1)) (setq AidSecP SecPoint))
- (command "pline" AidFisP AidSecP "")
- (setq I (+ I 1))
- (setq FirPoint SecPoint)
- (setq SecPoint (nth I Enlist))
- );end while SecPoint
- ;(command "circle" FirPoint Rad)
- );end progn
- );end if
- (setq T (+ T 1))
- (setq EnName (ssname SsSel T))
- );end while T
-
- (setvar "plinewid" 0)
- (setvar "aunits" 0)
- (setvar "clayer" "0")
- (command "layer" "f" Enla "")
- )
- (prompt "\n未找到曲线!请检查层以及是否为三维线!")
- );end if SsSel
- (undo_end)
- );end 731b
-
- ;;;;;;;;;;
- (defun c:835b () ;单线干沟835b
-
- (setq ss (ssget "x" '((0 . "POLYLINE") (8 . "6342"))))
- (setq len (sslength ss))
- (setq t 0)
- (setq en (ssname ss t))
-
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
-
- (while (< t len)
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (PROGN
- (setq i 0)
- (setq PC (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (SETQ WID (* 0.0 wwblc))
- (SETVAR "PLINEWID" WID)
- (SETQ D1 (* 0.003 wwblc))
- (SETQ D2 (* 0.001 wwblc))
- (SETQ S1 (* 0.001 wwblc))
- (SETQ D (/ D1 2))
- (SETQ S S1)
- (SETQ X0 (CAR PC))
- (SETQ Y0 (CADR PC))
- (SETQ KP 1)
- (SETQ KK 0)
- (SETQ KW 1)
- (SETQ KT 1)
- (WHILE (/= KK 1)
- (IF (= KP 1)
- (PROGN (setq i (+ 1 I))(setq DC (nth i lt))
- (IF (= DC NIL)
- (PROGN(SETQ KK 1))
- (PROGN(SETQ X1 (CAR DC))
- (SETQ Y1 (CADR DC))
- ))
- ))
-
- (SETQ KM (DISTANCE (LIST X0 Y0) (LIST X1 Y1)))
- (IF (< KM D)
- (PROGN(SETQ D (- D KM))
- (SETQ KP 1)
-
- (IF (/= KW 3)
- (PROGN(COMMAND "PLINE" (LIST X0 Y0) (LIST X1 Y1) "")
- ))
-
- (SETQ X0 X1)
- (SETQ Y0 Y1)
- )
-
-
- (PROGN(SETQ HS D)
- (SETQ X (+ X0 (* HS (/ (- X1 X0) KM))))
- (SETQ Y (+ Y0 (* HS (/ (- Y1 Y0) KM))))
-
- (IF (/= KW 3)
- (PROGN(COMMAND "PLINE" (LIST X0 Y0) (LIST X Y) "")
- ))
- (IF (= KW 1)
- (PROGN(IF (= KT 2)
- (PROGN(SETQ XD (+ X (* S (/ (- Y1 Y0) KM))))
- (SETQ YD (- Y (* S (/ (- X1 X0) KM))))
- (COMMAND "LINE" (LIST XD YD) (LIST X Y) "")
- ))
- ))
-
-
- (SETQ KW (+ KW 1))
- (IF (> KW 3)
- (PROGN(SETQ KW 1)
- (SETQ D (/ D1 2))
- (SETQ KT (+ KT 1))
- (IF (> KT 2)
- (PROGN(SETQ KT 1)
- ))
- ))
- (IF (= KW 2)
- (PROGN(SETQ D (/ D1 2))
- ))
- (IF (= KW 3)
- (PROGN(SETQ D D2)
- ))
-
- (SETQ X0 X)
- (SETQ Y0 Y)
-
- (SETQ KP 0)
- )
- )
- )
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
-
- );end progn
- );IF LT IS NULL BLOCK
- (setq t (+ 1 t))
- (setq en (ssname ss t))
- );endwhile
- (setvar "PLINEWID" 0)
- (command "layer" "f" la "");根据需要选择此行
- );endfunction
-
- ;;;;;格网坐标;;;;;;;;;;;;;;;
- (defun c:zjxy()
- (command "style" "STANDARD" "rs,hztxt" "0" "0.75" "0" "n" "n" "n")
- (command "layer" "s" "9800" "" "")
- (setq au (getvar "aunits"))
- (setvar "aunits" 1)
- (setq e (entsel "SELCET GRID OBJECT:"))
- (setq en (car e))
- (setq ed (entget en))
- (setq pt (cdr (assoc 10 ed)))
- (setq ptx (car pt))
- (setq pty (cadr pt))
- (setq px (itoa (fix ptx)))
- (setq py (itoa (fix pty)))
- (setq x "X")
- (setq y "Y")
- (setq zx (strcat y px))
- (setq zy (strcat x py))
- (setq pd (getpoint pt "请指定方向:"))
- (setq pdx (car pd))
- (setq pdy (cadr pd))
- (cond
- ((< pdx ptx) (setq pzx (list (- ptx 30) (+ pty 0.4) 0)))
- ((> pdx ptx) (setq pzx (list (+ ptx 0.5) (+ pty 0.4) 0)))
- )
- (cond
- ((> pdy pty) (setq pzy (list (+ ptx 0.4) (+ pty 38) 0)))
- ((< pdy pty) (setq pzy (list (- ptx 0.4) (+ pty 6) 0)))
- )
- (command "text" pzx 5 0 zy)
- (cond
- ((> pdy pty) (command "text" pzy 5 270 zx))
- ((< pdy pty) (command "text" pzy 5 90 zx))
- )
- (setvar "aunits" 0)
- )
-
- ;;;;一般铁路611
- (defun c:611()
-
- (setvar "cmdecho" 0)
- (setvar "aunits" 3)
- (setvar "auprec" 4)
-
- (setq ss (ssget "x" '((0 . "POLYLINE") (8 . "4110"))))
- (setq len (sslength ss))
- (setq t 0)
- (setq en (ssname ss t))
-
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
-
- (while (< t len)
-
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (progn
- (setq i 0)
- (setq d1 (* 0.01 wwblc))
- (setq d2 (* 0.01 wwblc))
- (setq width (* 0.0008 wwblc)) ;;;注意线宽
- (setvar "PLINEWID" width);;;
- (setq D D1)
- (setq PC (nth i lt))
- (setq i (+ 1 I))
- (setq DC (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (setq ang (angle pc dc))
- (command "offset" (/ width 2.0) en (polar pc (+ ang (/ pi 2.0)) d1) "")
- (command "change" "last" "" "p" "la" lla "")
- (command "offset" (/ width 2.0) en (polar pc (- ang (/ pi 2.0)) d1)"")
- (command "change" "last" "" "p" "la" lla "")
- (setq kk 1)
- (WHILE (/= dc nil)
-
- (setq km (distance pc dc))
- (setq ang (angle pc dc))
- (while (>= km d)
- (setq am (polar pc ang d))
- (if (= kk 1)
- (progn(command "pline" pc am ""))
- );endif
- (setq km (- km d))
- (if (= kk 1)
- (progn(setq kk 2)
- (setq d d2))
- (progn(setq kk 1)
- (setq d d1));endprogn
- );endif
- (setq pc am)
- );endwhile
- (if (= kk 1)
- (progn(command "pline" pc dc ""))
- );endif
-
- (setq d (- d km))
- (setq pc dc)
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq DC (nth i lt))
- );endwhile
-
- ));IF LT IS NULL BLOCK
- (setq t (+ 1 t))
- (setq en (ssname ss t))
- );endwhile
- (setvar "PLINEWID" 0)
- (setvar "aunits" 0)
- (command "layer" "f" la "");根据需要选择此行
- );endfunction
-
-
- ;;;;窄轨铁路613
- (defun c:613()
-
- (setvar "cmdecho" 0)
- (setvar "aunits" 3)
- (setvar "auprec" 4)
-
- (setq ss (ssget "x" '((0 . "LWPOLYLINE") (8 . "4130"))))
- (setq len (sslength ss))
- (setq t 0)
- (setq en (ssname ss t))
-
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
-
- (while (< t len)
-
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (progn
- (setq i 0)
- (setq d1 (* 0.006 wwblc))
- (setq d2 (* 0.006 wwblc))
- (setq width (* 0.0006 wwblc)) ;;;注意线宽
- (setvar "PLINEWID" width);;;
- (setq D D1)
- (setq PC (nth i lt))
- (setq i (+ 1 I))
- (setq DC (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (setq ang (angle pc dc))
- (command "offset" (/ width 2.0) en (polar pc (+ ang (/ pi 2.0)) d1) "")
- (command "change" "last" "" "p" "la" lla "")
- (command "offset" (/ width 2.0) en (polar pc (- ang (/ pi 2.0)) d1)"")
- (command "change" "last" "" "p" "la" lla "")
- (setq kk 1)
- (WHILE (/= dc nil)
-
- (setq km (distance pc dc))
- (setq ang (angle pc dc))
- (while (>= km d)
- (setq am (polar pc ang d))
- (if (= kk 1)
- (progn(command "pline" pc am ""))
- );endif
- (setq km (- km d))
- (if (= kk 1)
- (progn(setq kk 2)
- (setq d d2))
- (progn(setq kk 1)
- (setq d d1));endprogn
- );endif
- (setq pc am)
- );endwhile
- (if (= kk 1)
- (progn(command "pline" pc dc ""))
- );endif
-
- (setq d (- d km))
- (setq pc dc)
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq DC (nth i lt))
- );endwhile
-
- ));IF LT IS NULL BLOCK
- (setq t (+ 1 t))
- (setq en (ssname ss t))
- );endwhile
- (setvar "PLINEWID" 0)
- (setvar "aunits" 0)
- (command "layer" "f" la "");根据需要选择此行
- );endfunction
-
- ;;;;轻便轨道615
- (defun c:615()
-
- (setvar "cmdecho" 0)
- (setvar "aunits" 3)
- (setvar "auprec" 4)
-
- (setq ss (ssget "x" '((0 . "LWPOLYLINE") (8 . "4150"))))
- (setq len (sslength ss))
- (setq t 0)
- (setq en (ssname ss t))
-
- (setq ed (entget en))
- (setq la (cdr (assoc 8 ed)))
- (setq lla (strcat la "_sym"))
- (command "layer" "m" lla "c" "4" "" "")
-
- (while (< t len)
-
- (setq lt (get-line-list en))
- (IF (/= LT NIL)
- (progn
- (setq i 0)
- (setq d1 (* 0.002 wwblc))
- (setq d2 (* 0.002 wwblc))
- (setq width (* 0.0006 wwblc)) ;;;注意线宽
- (setvar "PLINEWID" width);;;
- (setq D D1)
- (setq PC (nth i lt))
- (setq i (+ 1 I))
- (setq DC (nth i lt))
- ;;;;;;;;;;;;;;;;;;;;;以下为替换部分
- (setq ang (angle pc dc))
- (command "offset" (/ width 2.0) en (polar pc (+ ang (/ pi 2.0)) d1) "")
- (command "change" "last" "" "p" "la" lla "")
- (command "offset" (/ width 2.0) en (polar pc (- ang (/ pi 2.0)) d1)"")
- (command "change" "last" "" "p" "la" lla "")
- (setq kk 1)
- (WHILE (/= dc nil)
-
- (setq km (distance pc dc))
- (setq ang (angle pc dc))
- (while (>= km d)
- (setq am (polar pc ang d))
- (if (= kk 1)
- (progn(command "pline" pc am ""))
- );endif
- (setq km (- km d))
- (if (= kk 1)
- (progn(setq kk 2)
- (setq d d2))
- (progn(setq kk 1)
- (setq d d1));endprogn
- );endif
- (setq pc am)
- );endwhile
- (if (= kk 1)
- (progn(command "pline" pc dc ""))
- );endif
-
- (setq d (- d km))
- (setq pc dc)
- ;;;;;;;;;;;;;;;;;;;;;以上为替换部分
- (setq i (+ 1 i))
- (setq DC (nth i lt))
- );endwhile
-
- ));IF LT IS NULL BLOCK
- (setq t (+ 1 t))
- (setq en (ssname ss t))
- );endwhile
- (setvar "PLINEWID" 0)
- (setvar "aunits" 0)
- (command "layer" "f" la "");根据需要选择此行
- );endfunction
-
- (defun c:mj();;;;计算面积
-
- (setvar "cmdecho" 0)
- (setq EnName (car (entsel "\n选择内图廓线:")))
- (command "area" "o" EnName)
- (setq Mj (getvar "area"))
- (setq Mj (/ Mj (expt (* 0.1 wwblc) 2)))
- (prompt "\n此图面积为:")
- (print MJ)
- )
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (defun c:tcd();;沙砾地
- (setq md (getreal "\n请输入密度值;[20]"))
- (command "_hatch" "dots" md "0")
- (print)
- )
-
- ;;;;;;;;;;;;;;;;;;;插符号;;;;;;;;;;;;;;;
- (defun chafuhao(chengma kuaimin fangxiang)
- (if (= wwblc nil) (setq xl 4.0))
- (if (= wwblc 500) (setq xl 1.0))
- (if (= wwblc 1000) (setq xl 2.0))
- (if (= wwblc 2000) (setq xl 4.0))
- (command "layer" "m" chengma "c" "7" "" "")
- (setq p1 (getpoint "\n 插入点:"))
- (while (/= p1 nil)
- (if (= fangxiang 0)
- (progn
- (setq p3 0)
- )
- (progn
- (setq p2 (getorient p1 "\n请指定方向;"))
- (setq p3(/(* p2 180) 3.1415926))
- )
- )
- (command "insert" kuaimin p1 xl xl p3)
- (setq p1 (getpoint "\n 插入点:"))
- )
-
- (print)
- )
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
- ;;;;;;GB码对应名称
- (defun c:GBmc()
- (print)
- (setq duixiang (entsel "选择一个对象:"))
- (if (/= duixiang nil)
- (progn
- (setq Myen (car duixiang))
- (setq Med (entget myen))
- (setq cenma (assoc 8 Med))
- (setq cema (cdr cenma))
- ))
-
- (setq fil(findfile "gb.w"))
- (setq f(open fil "r"))
- (setq txt(read-line f))
- (setq sss 0)
- (setq len (strlen cema))
- (if (> len 3)
- (progn
- (while(/= txt "END")
- (setq txt1(substr txt 1 4))
- (setq cema1(substr cema 1 4))
- (if (= txt1 cema1)
- (progn
- (print (strcat "-------------" txt "---------------"))
- (setq txt "END")
- (setq sss 1)
- )
- (progn
- (setq txt(read-line f))
- )
- )
- )
- (close f)
- (if (= sss 0)(print (strcat "***********在GB库中找不到: " cema " ***********")))
- )
- (progn
- (print (strcat "***********在GB库中找不到: " cema " ***********"))
- )
- );endif
- (print)
- )
- ;;;;
- ;;;;处理文本 + ;;;
- (defun c:bg()
- (setvar "cmdecho" 0)
- ;(setq ed8 "8340")
- ;(setq ed0 "text")
- (setq ss0 (ssget "x" (list (cons 0 "text"))))
- (if (/= ss0 nil)
- (progn
- (setq i 0)
- (setq j 0)
- (setq sslen0 (sslength ss0))
- (while (< i sslen0)
- (setq ssen (ssname ss0 i))
- (setq ssed (entget ssen))
- (setq ss10 (cdr (assoc 10 ssed)))
- (setq sstxt1 (cdr (assoc 1 ssed)))
- (setq sstxt2 (substr sstxt1 1 1))
- (if (= sstxt2 "+")
- (progn
- (command "insert" "hp.dwg" ss10 "" "" "")
- (setq sstxt1 (substr sstxt1 2))
- (command "erase" ssen "")
- (command "text" ss10 4 0 sstxt1)
- (setq xx(+ (car ss10) 50))
- (setq yy(+ (cadr ss10) 25))
- (setq xy(list xx yy))
- (setq newtext(entlast))
- ;(command "move" newtext "0,0,0" xy "")
- )
- )
- (setq i (+ 1 i))
- )
- )
- )
- )
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (defun c:jb()
- (setq jbe1 (entsel "\n<靠近目标点选择,右键结束>:"))
- (while (/= jbe1 nil)
- (progn
- (redraw (car jbe1) 3)
- (princ "\n选择第二条目标线,<")
- (setq jbe2 (nentsel "<靠近目标点选择,右键结束>:"))
- (if (/= jbe2 nil)
- (progn
- (setq jben1 (car jbe1))
- ;(setq jben2 (car jbe2))
- (block-enty (car jbe2))
- (setq jben2 bsenty)
- (setq jbed1 (entget jben1))
- (setq jbed2 (entget jben2))
- (setq jb0 (cdr (assoc 0 jbed1)))
- (setq jb8 (cdr (assoc 8 jbed1)))
- (setq jb18 (cdr (assoc 8 jbed2)))
- (setq jbbool 0)
- (if (not (equal jb8 jb18))
- (progn
- (print "层码不同,不能相接!!!")
- (setq cmbol (getstring "\n是否强行接边?<Y/N>:N"))
- (if (OR (eq cmbol "N") (eq cmbol "n") (eq cmbol ""))
- (progn (setq jbbool 1)
- ))
- ))
- (if (= jbbool 0)
- (progn
- (if (OR (= jb0 "POLYLINE") (= jb0 "LWPOLYLINE"))
- (progn
- (setq jb10 (cdr (assoc 0 jbed2)))
- (if (OR (= jb10 "POLYLINE") (= jb10 "LWPOLYLINE"))
- (progn
- (setq selp1 (cadr jbe1))
- (setq selp2 (cadr jbe2))
- (setq jblist1 (get-line-list jben1))
- (setq jblist2 (get-line-list jben2))
- (setq p11 (car jblist1))
- (setq p12 (last jblist1))
- (setq ev11 (nth 2 p11))
- (setq ev12 (nth 2 p12))
- (setq pt11 (list (nth 0 p11) (nth 1 p11)))
- (setq pt12 (list (nth 0 p12) (nth 1 p12)))
-
- (setq p21 (car jblist2))
- (setq p22 (last jblist2))
- (setq ev21 (nth 2 p21))
- (setq ev22 (nth 2 p22))
- (setq pt21 (list (nth 0 p21) (nth 1 p21)))
- (setq pt22 (list (nth 0 p22) (nth 1 p22)))
-
- (setq spt1 (list (nth 0 selp1) (nth 1 selp1)))
- (setq spt2 (list (nth 0 selp2) (nth 1 selp2)))
- (setq jbd11 (distance spt1 pt11))
- (setq jbd12 (distance spt1 pt12))
- (setq sek 0)
- (setq selv 0)
- (if (< jbd11 jbd12)
- (progn (setq selv ev11)
- (setq sek 1))
- (progn (setq selv ev12)
- (setq sek 2))
- )
- (setq jbd21 (distance spt2 pt21))
- (setq jbd22 (distance spt2 pt22))
- (if (< jbd21 jbd22)
- (setq mpt (list (nth 0 pt21) (nth 1 pt21) selv))
- (setq mpt (list (nth 0 pt22) (nth 1 pt22) selv))
- )
- (endpmod jben1 jb0 mpt sek)
- ))
- ))
- );;;;;;(progn (print "层码不同,不能相接!!!"))
- )
- (princ "\n选择第一条要移动的线,<")
- (setq jbe1 (entsel "<靠近目标点选择,右键结束>:"))
- )(progn (setq jbe1 nil))
- )
- ))
- )
- ;修改线实体端点坐标
- (defun endpmod(sen p0 lpt se)
- (setq ed-list (entget sen))
- (if (= p0 "POLYLINE")
- (progn
- (if (= se 1)
- (progn
- (setq sen1 (entnext sen))
- (setq sed1 (entget sen1))
- (setq sed10 (assoc 10 sed1))
- (setq new10 (cons 10 lpt))
- (setq sed1 (subst new10 sed10 sed1))
- (entmod sed1)
- (entupd sen)
- ))
- (if (= se 2)
- (progn
- (setq sen1 (entnext sen))
- (setq sed1 (entget sen1))
- (setq vex (cdr (assoc 0 sed1)))
- (while (= vex "VERTEX")
- (progn
- (setq lasted sed1)
- (setq sen1 (entnext sen1))
- (setq sed1 (entget sen1))
- (setq vex (cdr (assoc 0 sed1)))
- ))
- (setq sed10 (assoc 10 lasted))
- (setq new10 (cons 10 lpt))
- (setq sed1 (subst new10 sed10 lasted))
- (entmod sed1)
- (entupd sen)
- ))
- ));
- (if (= p0 "LWPOLYLINE")
- (progn
- (if (= se 1)
- (progn
- (setq edlen (length ed-list))
- (setq edi 0)
- (while (< edi edlen)
- (progn
- (setq bz10 (car (nth edi ed-list)))
- (if (= bz10 10)
- (progn
- (setq ed10 (nth edi ed-list))
- (setq new10 (cons 10 lpt))
- (setq ed-list (subst new10 ed10 ed-list))
- (entmod ed-list)
- (entupd sen)
- (setq edi edlen)
- ))
- (setq edi (+ 1 edi))
- ))
- ));
- (if (= se 2)
- (progn
- (setq edlen (length ed-list))
- (setq edi 0)
- (while (< edi (- edlen 3))
- (progn
- (setq bz10 (car (nth edi ed-list)))
- (if (= bz10 10)
- (progn
- (setq edi (+ 3 edi))
- ))
- (setq edi (+ 1 edi))
- ))
- (setq ed10 (nth (- edi 4) ed-list))
- (setq new10 (cons 10 lpt))
- (setq ed-list (subst new10 ed10 ed-list))
- (entmod ed-list)
- (entupd sen)
- ))
-
- ))
- )
-
- ;;;;;;;;;;;;;;;;;选择块内实体
- (defun block-enty(benty)
- (setq bentyd (entget benty))
- (setq bpol (cdr (assoc 0 bentyd)))
- (if (= bpol "VERTEX")
- (progn
- (setq benty (entnext benty))
- (setq bpol (cdr (assoc 0 bentyd)))
- (while (/= bpol "SEQEND")
- (progn
- (setq benty (entnext benty))
- (setq bentyd (entget benty))
- (setq bpol (cdr (assoc 0 bentyd)))
- ))
- (setq bsenty (cdr (assoc -2 bentyd)))
- )
- (progn
- (setq bsenty benty)
- ))
- )
-
- ;;;;;;;;;;;;;;填充房屋
- (defun c:tcfw ()
- (undo_begin)
- (clos)
- (setvar "cmdecho" 1)
- (command "osnap" "none")
- (setq askdst (getreal "请输入填充间距?(3.2 米)"))
- (if (= askdst nil)(setq askdst 3.2))
- (setq ang2 (getreal "角度:(0.0)"))
- (if (= ang2 nil)(setq ang2 0))
- (command "zoom" "extents")
- (if (= askdst nil)
- (progn
- (setq hadist 80.0)
- (setq askdst 80.0)
- )
- (progn
- (setq hadist (* 8 askdst))
- )
- )
- (setq haasmb (ssget "x" (list (cons 0 "hatch") (cons 8 laynm))))
- (command "erase" haasmb "")
- (setq haasmb nil)
- (setq entasmb nil)
- (setq entasmb(ssget "x"(list (cons 0 "polyline") (cons 8 laynm))))
- (command "layer" "m" laynm "")
- (setq tmpasmb nil)
- (setq tmpasmb (ssadd))
- (setq i 0)
- (princ "\n 填充中... 请等待.\n")
- (while (< i (sslength entasmb))
- (setq lnent1 nil)
- (setq lnent1 (ssname entasmb i))
- (getaposition)
- (if (< (length poasmb) 3)
- (command "erase" lnent1 "")
- (progn
- (getmxdist)
- (setq aaa poasmb)
- (setq point1 (nth 0 poasmb)
- point2 (nth 1 poasmb)
- )
- (setq ptkkk (nth 0 poasmb))
- (setq maxdist 0)
- (setq j 1)
- (while (/= point2 nil)
- (setq dist (distance point1 point2))
- (setq dist1 (distance ptkkk point2))
- (if (> dist maxdist)
- (progn
- (setq angl (/ (*(angle point1 point2) 180.0) pi))
- (setq maxdist dist)
- )
- )
- (setq j (1+ j))
- (setq point1 point2)
- (setq point2 (nth j poasmb))
- )
- (setq ang3(+ angl (- 360 ang2)))
- (if (> ang3 360)(setq ang3(- ang3 360)))
- (if (and (> ang3 45) (< ang3 135))
- (progn
- (setq angl (- angl 90))
- )
- (progn
- (if (and (> ang3 225) (< ang3 315))
- (setq angl (- angl 90))
- )
- )
- )
- (if (and (< mxdist1 (* askdst 3)) (< maxdist (* askdst 3)))
- (setq hadist (* (/ maxdist 2.5) 8))
- (progn
- (setq hadist (* askdst 8))
- )
- )
- (if (> hadist (* askdst 8))
- (setq hadist (* askdst 8))
- )
- (if (= (ssmemb lnent1 tmpasmb) nil)
- (progn
- (setq tmpasmb (ssadd lnent1 tmpasmb))
- (setq subasmb (ssget "_cp"
- poasmb
- (list (cons 0 "polyline")
- (cons 8 laynm)
- (cons 70 1)
- )
- )
- )
- (if (= subasmb nil)
- (progn
- (setq subasmb (ssadd))
- (setq subasmb (ssadd lnent1 subasmb))
- )
- (progn
- (setq subasmb (ssadd lnent1 subasmb))
- )
- )
- (setq haasmb (ssget "_cp"
- poasmb
- (list (cons 0 "hatch") (cons 8 laynm))
- )
- )
- (command "erase" haasmb "")
- (command "bhatch" "s" subasmb "" "p" "ansi31" hadist angl "")
- (setq k 0)
- (while (< k (sslength subasmb))
- (setq lnent1 (ssname subasmb k))
- (setq tmpasmb (ssadd lnent1 tmpasmb))
- (setq k (1+ k))
- )
- )
- (progn
- (princ "\n Be Hatched!!")
- )
- )
- )
- )
- (setq i (1+ i))
- )
- (print "房屋已填充!" )
- (princ)
- (undo_end)
- )
-
-
- (defun clos()
- (setvar "cmdecho" 0)
- (command "osnap" "none")
- (setq laynm (getstring "请输入要处理的层:"))
- (princ "\n Procissing... Please Wait.\n")
- (setq entasmb (ssget "x" (list (cons 0 "polyline") (cons 8 laynm))))
- (setq i 0)
- (while (< i (sslength entasmb))
- (setq lnent1 nil)
- (setq lnent1 (ssname entasmb i))
- (getaposition)
- (setq ent2 (entget lnent1))
- (if (/= (rem (cdr (assoc 70 ent2)) 2) 1)
- (progn
- (if (< (distance (car poasmb) (last poasmb)) 0.5)
- (progn
- (setq ent2 (subst (cons 70 1) (assoc 70 ent2) ent2))
- (entmod ent2)
- (entupd lnent1)
- )
- )
- )
- (progn
- (setq ent2 (subst (cons 70 1) (assoc 70 ent2) ent2))
- (entmod ent2)
- (entupd lnent1)
- )
- )
- (setq i (1+ i))
- )
- (setq i nil
- entasmb nil
- )
- )
- (defun getaposition ()
- (setq poasmb nil)
- (setq suben1 (entnext lnent1))
- (setq suben2 (entget suben1))
- (setq nameid (cdr (assoc 0 suben2)))
- (while (and (/= nameid "SEQEND") (/= suben1 nil))
- (setq suben2 (entget suben1))
- (setq nameid (cdr (assoc 0 suben2)))
- (if (= (strcase nameid) "VERTEX")
- (progn
- (setq point (cdr (assoc 10 suben2)))
- (setq poasmb (cons point poasmb))
- (setq suben2 nil
- point nil
- nameid nil
- )
- )
- )
- (setq suben1 (entnext suben1))
- (setq suben2 (entget suben1))
- (setq nameid (cdr (assoc 0 suben2)))
- )
- (setq suben2 (entget lnent1))
- (setq pt1 (nth 0 poasmb))
- (setq tmpsmb nil)
- (setq tmpsmb (cons pt1 tmpsmb))
- (setq subk 1)
- (while (< subk (length poasmb))
- (setq pt1 (nth subk poasmb))
- (setq jstflg t)
- (setq subi 0)
- (while (< subi (length tmpsmb))
- (if (<= (distance pt1 (nth subi tmpsmb)) 0.1)
- (setq jstflg nil)
- )
- (setq subi (1+ subi))
- )
- (if (= jstflg t)
- (setq tmpsmb (cons pt1 tmpsmb))
- (setq jstflg t)
- )
- (setq subk (1+ subk))
- )
- (setq poasmb tmpsmb)
- (if (= (rem (cdr (assoc 70 suben2)) 2) 1)
- (progn
- (setq point (last poasmb))
- (setq poasmb (cons point poasmb))
- )
- )
- (setq suben2 nil
- point nil
- )
- (setq poasmb (reverse poasmb))
- (setq suben1 nil)
- )
- (defun getmxdist ()
- (setq mxdist1 0)
- (setq mxiiii 0)
- (while (< mxiiii (length poasmb))
- (setq mxpt1 (nth mxiiii poasmb))
- (setq mxkkkk (+ mxiiii 1))
- (while (< mxkkkk (length poasmb))
- (setq mxpt2 (nth mxkkkk poasmb))
- (if (> (distance mxpt1 mxpt2) mxdist1)
- (progn
- (setq mxdist1 (distance mxpt1 mxpt2))
- (setq mxangl (angle mxpt1 mxpt2))
- )
- )
- (setq mxkkkk (1+ mxkkkk))
- )
- (setq mxiiii (1+ mxiiii))
- )
- )
- (defun c:gczj()
- (undo_begin)
- (setq lla (getstring "输入层名:"))
- (gzg lla)
- (gzk lla)
- (undo_end)
- )
- ;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;
- (defun gzg(lla)
- (setq zg 4)
- (setq ss (ssget "x" (list (cons 8 lla) (cons 0 "text"))))
- (setq i 0)
- (setq len (sslength ss))
- (while (< i len)
- (setq en (ssname ss i))
- (setq ed (entget en))
- (setq h40 (assoc 40 ed))
- (setq hh40 (cons 40 zg))
- (setq ed (subst hh40 h40 ed))
- (entmod ed)
- (setq i (+ 1 i))
- )
- )
- ;;;;;;;;;;;;;;;;;
- (defun gzk(lla)
- (SETQ WID 0.8)
- (setq ss (ssget "x" (list (cons 8 lla) (cons 0 "TEXT"))))
- (setq i 0)
- (setq len (sslength ss))
- (while (< i len)
- (progn
- (setq en (ssname ss i))
- (setq ed (entget en))
- (setq h41 (assoc 41 ed))
- (setq hh41 (cons 41 wid))
- (setq ed (subst hh41 h41 ed))
- (entmod ed)
- (setq i (+ 1 i))
- ))
- )
-
- ;;;;;;;;;;;;;;;
- (defun c:dgxzj()
- (print)
- (setq setqx (entsel "选择一根记曲线:"))
- (setq setxy (cadr setqx))
- (setq setqx (car setqx))
- (setq enqx(entget setqx))
- (setq en0(cdr (assoc 0 enqx)))
- (setq txt "ERROR")
- (if (= en0 "POLYLINE")(setq txt (itoa (fix (cadddr (assoc 10 enqx))))))
- (if (= en0 "LWPOLYLINE")(setq txt (itoa (fix (cdr (assoc 38 enqx))))))
- (setq txtfx (getorient setxy "\n请指定方向;"))
- (setq setxy(polar setxy (+ 1.6 txtfx) -2))
- (setq txtfx(/(* txtfx 180) 3.1415926))
- (command "layer" "m" "曲线注记" "" )
- (command "style" "STANDARD" "rs,hztxt" "0" "0.75" "0" "n" "n" "n")
- (command "_text" setxy txtfx txt)
- (princ)
- )
- (defun c:ybjmd()
- (setq setxy (getpoint "\n 输入位置:"))
- (command "layer" "m" "一般居民地" "" )
- (command "style" "STANDARD" "rs,hztxt" "0" "0.75" "0" "n" "n" "n")
- (setq txt (getstring "\n输入文字:"))
- (command "_text" setxy 0 txt )
- )
- (defun c:szzj()
- (setq setxy (getpoint "\n 输入位置:"))
- (command "layer" "m" "数字注记" "" )
- (command "style" "STANDARD" "rs,hztxt" "0" "0.75" "0" "n" "n" "n")
- (setq txt (getstring "\n输入数字:"))
- (command "_text" setxy 0 txt )
- )
- (defun c:smzj()
- (setq setxy (getpoint "\n 输入位置:"))
- (command "layer" "m" "说明注记" "" )
- (command "style" "STANDARD" "rs,hztxt" "0" "0.75" "0" "n" "n" "n")
- (setq txt (getstring "\n输入文字:"))
- (command "_text" setxy 0 txt )
- )
- (defun c:xzzj()
- (setq setxy (getpoint "\n 输入位置:"))
- (command "layer" "m" "乡镇" "" )
- (command "style" "STANDARD" "rs,hztxt" "0" "0.75" "0" "n" "n" "n")
- (setq txt (getstring "\n输入文字:"))
- (command "_text" setxy 0 txt )
- )
- (defun c:fmzj()
- (setq setxy (getpoint "\n 输入位置:"))
- (command "layer" "m" "附名" "" )
- (command "style" "STANDARD" "rs,hztxt" "0" "0.75" "0" "n" "n" "n")
- (setq txt (getstring "\n输入文字:"))
- (command "_text" setxy 0 txt )
- )
- (defun c:jdzj()
- (setq setxy (getpoint "\n 输入位置:"))
- (command "layer" "m" "界端注记" "" )
- (command "style" "STANDARD" "rs,hztxt" "0" "0.75" "0" "n" "n" "n")
- (setq txt (getstring "\n输入文字:"))
- (command "_text" setxy 0 txt )
- )
- ;;;检查曲线值
- (defun c:jcqxz()
- (setq rcKey nil)
- (setq rckey1 "jcqxz1")
- (while (not (eq rcKey "eXit"))
- (progn
- (initget 128 "jcqxz1 jcqxz2 eXit")
- (print)
- (setq rcKey (getkword "起点在高处[1]/起点在低处[2]/退出[X] 右键继续:"))
- (if (eq rcKey nil)(setq rckey rckey1)(setq rckey1 rckey))
- (cond
- ((eq rcKey "jcqxz1") (jcqxz1)); (princ "\n起点在高处[1]:\n"))
- ((eq rcKey "jcqxz2") (jcqxz2)); (princ "\n起点在低处[2]:\n"))
- (t nil)
- );;;cond
- )
- (princ)
- )
- )
- (defun jcqxz2()
- (setvar "cmdecho" 0)
- (setvar "osmode" 0)
- (print)
- (setq p1(getpoint "低处"))
- (print)
- (setq p2(getpoint p1 "高处"))
- (print)
- (setq ck (ssget "F" (list p1 p2 )))
- (setq ss -1)
- (setq ys 3)
- (setq gc nil)
- (while (= gc nil)
- (setq ss(+ ss 1))
- (setq ck1(ssname ck ss))
- (setq cm(cdr (assoc 8 (entget ck1))))
- (print cm)
- (if (or (= cm jc_jqx)(= cm jc_sqx))
- (progn
- (command "_change" ck1 "" "p" "c" ys "")
- (setq lin-list (get-line-list ck1))
- (setq gc(nth 2 (nth 1 lin-list)))
- (print gc)
- (princ "a")
- ));;endif
- )
- (repeat (- (sslength ck) (+ ss 1))
- (setq ss (+ ss 1))
- (setq ys 3)
- (setq ck1(ssname ck ss))
- (setq cm(cdr (assoc 8 (entget ck1))))
- (if (or (= cm jc_jqx)(= cm jc_sqx))
- (progn
- (setq lin-list (get-line-list ck1))
- (setq gc1(nth 2 (nth 1 lin-list)))
- (setq gc(+ gc jc_dgj))
- (print gc1)
- (princ "b")
- (if (/= gc1 gc)(setq ys 1))
- ;(command "_change" ck1 "" "p" "e" gc "")
- (command "_change" ck1 "" "p" "c" ys "")
- )))
- (princ)
- )
- (defun jcqxz1()
- (setvar "cmdecho" 0)
- (setvar "osmode" 0)
- (print)
- (setq p1(getpoint "高处"))
- (print)
- (setq p2(getpoint p1 "低处"))
- (print)
- (setq ck (ssget "F" (list p1 p2 )))
- (setq ss -1)
- (setq ys 3)
- (setq gc nil)
- (while (= gc nil)
- (setq ss(+ ss 1))
- (setq ck1(ssname ck ss))
- (setq cm(cdr (assoc 8 (entget ck1))))
- (if (or (= cm jc_jqx)(= cm jc_sqx))
- (progn
- (command "_change" ck1 "" "p" "c" ys "")
- (setq lin-list (get-line-list ck1))
- (setq gc(nth 2 (nth 1 lin-list)))
- (print gc)
- ));;endif
- )
- (repeat (- (sslength ck) (+ ss 1))
- (setq ss (+ ss 1))
- (setq ck1(ssname ck ss))
- (setq cm(cdr (assoc 8 (entget ck1))))
- (if (or (= cm jc_jqx)(= cm jc_sqx))
- (progn
- (setq gc(- gc jc_dgj))
- (setq ys 3)
- (setq lin-list (get-line-list ck1))
- (setq gc1(nth 2 (nth 1 lin-list)))
- (if (/= gc1 gc)(setq ys 1))
- ;(command "_change" ck1 "" "p" "e" gc "")
- (print gc1)
- (command "_change" ck1 "" "p" "c" ys "")
- ))
- )
- (princ)
- )
-
- ;;;;桥
- (defun c:sxq()
- (setq en(car (entsel "/选择直线:")))
- (while (/= en nil)
- (setq en-list(get-line-list en))
- (setq list1(car en-list))
- (setq list2(nth (- (length en-list) 1) en-list))
- (setq pt(angle list1 list2))
- (setq list11(polar list1 (+ 2.356 pt) 4))
- (setq list22(polar list2 (+ 0.785 pt) 4))
- (command "layer" "m" "4620" "" )
- (command "pline" list11 list1 list2 list22 "")
- (command "erase" en "")
- (setq en(car (entsel "选择直线:")))
- (print)
- )
- )
- (defun c:dxq()
- (setq en(car (entsel "选择一直线:")))
- (setq en-list(get-line-list en))
- (setq list1(car en-list))
- (setq list2(nth (- (length en-list) 1) en-list))
- (setq pt(angle list1 list2))
- (setq list11(polar list1 (+ 2.356 pt) 2.5))
- (setq list22(polar list2 (+ 0.785 pt) 2.5))
- (setq list111(polar list1 (+ 3.93 pt) 2.5))
- (setq list222(polar list2 (+ 5.5 pt) 2.5))
- (command "layer" "m" "4642" "" )
- (command "pline" list11 list1 list111 "")
- (command "pline" list22 list2 list222 "")
- (command "pline" list1 list2 "")
- (command "erase" en "")
- (print)
- )
- ;;;;;
- (defun c:TXT1();;;;备注;;;
- (print)
- ;(print " 内部道路:虚线--实线1,空格1,线宽0.15 ")
-
- (print)
- )
- ;;获得线的节点表
- ;;{get-line-list 实体名(Type:"LWPOLYLINE" OR "POLYLINE")};
- ;;返回3D line-list ,line-elev ,ames-plnclose=1 close
- (defun get-line-list (line-en-name / line-name-list line-type)
- (setq ames-plnclose 0)
- (setq line-name-list (entget line-en-name))
- (setq line-type (cdr (assoc 0 line-name-list)))
- (cond
- ((= line-type "LWPOLYLINE") (get-lwpl-List line-en-name))
- ((= line-type "POLYLINE") (get-pl-List line-en-name))
- (T (prompt "\n此实体不是多义线!") (setq line-list nil) (setq line-elev nil) (*error*))
- );endcond
- );end get-line-list
- ;获得LWPOLYLINE线节点表
- (defun get-lwpl-List(line-en-name / line-name-list list-length
- pt1 p10 ptx pty ptz pt I m kk)
- (setq line-name-list (entget line-en-name))
- (setq list-length (length line-name-list))
- (setq line-list nil)
- (setq line-elev (cdr (assoc 38 line-name-list)))
- (setq d70 (cdr (assoc 70 line-name-list)))
- (setq I 0 m 0)
- (while (< m 20)
- (progn
- (setq kk (car (nth m line-name-list)))
- (if (= kk 10)
- (progn
- (setq i m)
- (setq m 21)
- ))
- (setq m (+ 1 m))
- ))
- (while (< i list-length)
- (progn
- (setq pt1 (nth i line-name-list))
- (setq p10 (nth 0 pt1))
- (if (= p10 10)
- (progn
- (setq ptx (nth 1 pt1))
- (setq pty (nth 2 pt1))
- (setq ptz line-elev)
- (setq pt (list ptx pty ptz))
- (setq line-list (cons pt line-list))
- ))
- (setq i (+ 4 i))
- ))
- (IF (OR (= D70 1) (= D70 9))
- (PROGN
- (SETQ line-list (CONS (LAST line-list) line-list))
- (setq ames-plnclose 1)
- ))
- (setq line-list (reverse line-list))
- );end get-lwpl-List
- ;获得POLYLINE线节点表
- (defun get-pl-List (line-en-name / line-name-list list-length vertex-name vertex-prop
- vertex-list ptx pty ptz pt)
- (setq line-list nil)
- (setq vertex-list (entget line-en-name))
- (setq d70 (cdr (assoc 70 vertex-list)))
- (setq vertex-name (entnext line-en-name))
- (setq vertex-list (entget vertex-name))
- (setq line-elev (nth 3 (assoc 10 vertex-list)))
- (setq vertex-prop (cdr (assoc 0 vertex-list)))
- (while (/= vertex-prop "SEQEND")
- (setq pt (cdr (assoc 10 vertex-list)))
- (if (/= pt nil)
- (progn
- (setq ptx (nth 0 pt))
- (setq pty (nth 1 pt))
- (setq ptz (nth 2 pt))
- (setq pt (list ptx pty ptz))
- (setq line-list (cons pt line-list))
- );endprogn
- );endif
- (setq vertex-name (entnext vertex-name))
- (setq vertex-list (entget vertex-name))
- (setq vertex-prop (cdr (assoc 0 vertex-list)))
- );endwhile
- (IF (OR (= D70 1) (= D70 9))
- (PROGN
- (SETQ line-list (CONS (LAST line-list) line-list))
- (setq ames-plnclose 1)
- ))
- (setq line-list (reverse line-list))
- );end get-pl-List
-
- ;;;;
- (DEFUN C:72b()
- (undo_begin)
- (setq sblip (getvar "blipmode"))
- (setq scmde (getvar "cmdecho"))
- (setvar "blipmode" 0)
- (setvar "cmdecho" 0)
- (setvar "cmdecho" 0)
- (setvar "aunits" 3)
- (if (= jieshi "0")
- (progn
- (SETQ enn '((-4 . "<OR")
- (0 . "POLYLINE")
- (0 . "LWPOLYLINE")
- (-4 . "OR>"))
- )
- (prompt "\n选择基线: ")
- (setq sssel (ssget enn))
- )
- (progn
- (setq SsSel (ssget "x" '((-4 . "<or") (0 . "POLYLINE") (0 . "LWPOLYLINE")(-4 . "or>")(8 . "5220"))))
- )
- )
- (command "layer" "m" "5220_SYM" "c" "4" "" "")
- (if (/= SsSel nil)
- (progn
- (setq SsLen (sslength SsSel))
- (setq T -1)
- (while (/= t (- SsLen 1))
- (setq T (+ T 1))
- (a72b_a (ssname SsSel T))
- )
- ))
- (setvar "aunits" 0)
- (undo_end)
- )
- (defun a72b_a(en)
- (setq en-list(get-line-list en))
- (setq en-s(length en-list))
- (setq ii 1.0)
- (setq j 1)
- (setq d1 (* 0.004 wwblc))
- (setq d2 (* 0.001 wwblc))
- (setq d3 (* 0.008 wwblc))
- (SETQ D D1)
- (setq kk 1)
- (setq pc(nth 0 en-list))
- (setq dc(nth 1 en-list))
- (setq ss 1)
- (WHILE (/= ss en-s)
- (SETQ km (distance pc dc))
- (setq ang (angle pc dc))
- (while (>= km d)
- (setq ii ( + ii 1))
- (setq am (polar pc ang d))
- (setq df d)
- (if (= kk 1)
- (progn(command "pline" pc am ""))
- )
- (setq km (- km d))
- (if (= kk 1)
- (progn(setq kk 2)
- (progn
- (setq d d2))
- )
- (progn(setq kk 1)
- (if (= (fix (/ ii 3.0)) (/ ii 3.0))
- (progn
- (setq d d3)
- (setq pcs pc)
- (setq pc1 (polar pc ang (+ d3 2)))
- (setq pc2 (polar pc ang 2))
- (setq pcs pc2)
- )
- (progn (setq j (+ j 1))
- (setq pcy pc)
- (setq d d1)))
- )
- )
- (if (and (= kk 1) (= (fix (/ (- ii 1) 3.0)) (/ (- ii 1) 3.0)))
- (progn (setq pc3 pc)
- (command "donut" "0" "1" pcs "")))
- (if (and (= kk 1) (= (fix (/ j 2.0)) (/ j 2.0)))
- (progn (command "donut" "0" "1" pcy "")))
- (setq pc am)
- )
- (if (= kk 1)
- (progn(command "pline" pc dc ""))
- )
- (setq d (- d km))
- (setq pc dc)
- (setq ss(+ ss 1))
- (setq dc(nth ss en-list))
- )
- (setvar "blipmode" sblip)
- (setvar "cmdecho" scmde)
- )
- ;;;
- (DEFUN C:445()
- (undo_begin)
- (setq sblip (getvar "blipmode"))
- (setq scmde (getvar "cmdecho"))
- (setvar "blipmode" 0)
- (setvar "cmdecho" 0)
- (command "layer" "m" "2460_SYM" "c" "4" "" "")
- (if (= jieshi "1")
- (PROGN
- (setq enss (ssget "x" '((-4 . "<OR")(0 . "POLYLINE")(0 . "LWPOLYLINE")(-4 . "OR>") (8 . "2460"))))
- (if (= enss nil)(PROGN(print "找不到 2460 !")(exit)))
- (setq len (sslength enss))
- (setq s -1)
- (WHILE (/= s (- len 1))
- (setq s(+ s 1))
- (setq en (ssname enss s))
- (a445_a en)
- );endwhile
- )
- (PROGN
- (setq en(car (entsel "\n选择基线:")))
- (a445_a en)
- ));endif
- (command "layer" "f" "2460" "")
- (undo_end)
- )
- (DEFUN a445_a(en)
- (setq en-list(get-line-list en))
- (setq en-s(length en-list))
- (SETQ D1 (* 0.01 wwblc))
- (SETQ D D1)
- (SETQ D2 (* 0.001 wwblc))
- (setq pc(nth 0 en-list))
- ;(SETQ PC (GETPOINT "\n Frome point:" ))
- (SETQ X0 (CAR PC))
- (SETQ Y0 (CADR PC))
- (SETQ XA X0)
- (SETQ YA Y0)
- (setq ss 1)
- (setq dc(nth 1 en-list))
- ;(SETQ DC (GETPOINT "\n To point:" ))
- (IF (= DC NIL)
- (PROGN(SETQ KK 1))
- (progn(setq kk 0)
- (SETQ X1 (CAR DC))
- (SETQ Y1 (CADR DC))
- )
- )
- (SETQ KP 1)
- (WHILE (/= KK 1)
- (SETQ KM (DISTANCE (LIST X0 Y0) (LIST X1 Y1)))
- (IF (< KM D)
- (PROGN(SETQ D (- D KM))
- (SETQ KP 1)
- (SETQ X0 X1)
- (SETQ Y0 Y1)
- (SETQ XB X0)
- (SETQ YB Y0)
- (COMMAND "LINE" (LIST XA YA) (LIST XB YB) "")
- (SETQ XA XB)
- (SETQ YA YB)
- )
- (PROGN(SETQ HS D)
- (SETQ X (+ X0 (* HS (/ (- X1 X0) KM))))
- (SETQ Y (+ Y0 (* HS (/ (- Y1 Y0) KM))))
- (SETQ XB (- X (* D2 (/ (- X1 X0) KM))))
- (SETQ YB (- Y (* D2 (/ (- Y1 Y0) KM))))
- (SETQ XC1 (- X (* (/ D2 2) (/ (- X1 X0) KM))))
- (SETQ YC1 (- Y (* (/ D2 2) (/ (- Y1 Y0) KM))))
- (SETQ XC2 (+ X (* (/ D2 2) (/ (- X1 X0) KM))))
- (SETQ YC2 (+ Y (* (/ D2 2) (/ (- Y1 Y0) KM))))
- (SETQ XE1 (- X (* (/ D2 2) (/ (- Y1 Y0) KM))))
- (SETQ YE1 (+ Y (* (/ D2 2) (/ (- X1 X0) KM))))
- (SETQ XE2 (+ X (* (/ D2 2) (/ (- Y1 Y0) KM))))
- (SETQ YE2 (- Y (* (/ D2 2) (/ (- X1 X0) KM))))
- (COMMAND "LINE" (LIST XA YA) (LIST XB YB) "")
- (COMMAND "LINE" (LIST XC1 YC1) (LIST XC2 YC2) "")
- (COMMAND "LINE" (LIST XE1 YE1) (LIST XE2 YE2) "")
- (SETQ XA (+ X (* D2 (/ (- X1 X0) KM))))
- (SETQ YA (+ Y (* D2 (/ (- Y1 Y0) KM))))
- (SETQ X0 X)
- (SETQ Y0 Y)
- (SETQ D D1)
- (SETQ KP 0)
- )
- )
- (IF (= KP 1)
- (PROGN
- (setq ss(+ ss 1))
- (setq dc(nth ss en-list))
- ;(PROGN(SETQ DC (GETPOINT "\n To point:" ))
-
- (IF (= ss en-s)
- (PROGN(SETQ KK 1)
- (COMMAND "LINE" (LIST XA YA) (LIST X1 Y1) "")
- )
- (PROGN(SETQ X1 (CAR DC))
- (SETQ Y1 (CADR DC))
- ))
- ))
- )
- (setvar "blipmode" sblip)
- (setvar "cmdecho" scmde)
- )
-
- (DEFUN C:446()
- (undo_begin)
- (setq sblip (getvar "blipmode"))
- (setq scmde (getvar "cmdecho"))
- (setvar "blipmode" 0)
- (setvar "cmdecho" 0)
- (command "layer" "m" "2470_SYM" "c" "4" "" "")
- (if (= jieshi "1")
- (PROGN
- (setq enss (ssget "x" '((-4 . "<OR")(0 . "POLYLINE")(0 . "LWPOLYLINE")(-4 . "OR>") (8 . "2470"))))
- (if (= enss nil)(PROGN(print "找不到 2470 !")(exit)))
- (setq len (sslength enss))
- (setq s -1)
- (WHILE (/= s (- len 1))
- (setq s(+ s 1))
- (setq en (ssname enss s))
- (a445_a en)
- );endwhile
- )
- (PROGN
- (setq en(car (entsel "\n选择基线:")))
- (a445_a en)
- ));endif
- (command "layer" "f" "2470" "")
- (undo_end)
- )
- (DEFUN a446_a(en / ss)
- (setq en-list(get-line-list en))
- (setq en-s(length en-list))
- (SETQ D (* 0.002 wwblc))
- (SETQ D2 (* 0.001 wwblc))
- (SETQ D3 (* 0.0006 wwblc))
- (setq pc(nth 0 en-list))
- ;(SETQ PC (GETPOINT "\n Frome point:" ))
- (SETQ X0 (CAR PC))
- (SETQ Y0 (CADR PC))
- (COMMAND "CIRCLE" (LIST X0 Y0) (/ D3 2))
- (setq ss 1)
- (setq dc(nth 1 en-list))
- ;(SETQ DC (GETPOINT "\n To point:" ))
- (IF (= DC NIL)
- (PROGN(SETQ KK 1)
- )
- (PROGN(SETQ X1 (CAR DC))
- (SETQ Y1 (CADR DC))
- (setq kk 0)
- ))
- (SETQ KW 2)
- (SETQ D4 D3)
- (WHILE (/= KK 1)
- (SETQ KM (DISTANCE (LIST X0 Y0) (LIST X1 Y1)))
- (IF (< KM D)
- (PROGN(SETQ D (- D KM))
- (SETQ KP 1)
- (SETQ X0 X1)
- (SETQ Y0 Y1)
- )
- (PROGN(SETQ HS D)
- (SETQ X (+ X0 (* HS (/ (- X1 X0) KM))))
- (SETQ Y (+ Y0 (* HS (/ (- Y1 Y0) KM))))
- (COMMAND "CIRCLE" (LIST X Y) (/ D4 2))
- (SETQ X0 X)
- (SETQ Y0 Y)
- (SETQ KW (+ KW 1))
- (IF (> KW 3)
- (PROGN(SETQ KW 1)
- (SETQ D (* 0.002 wwblc))
- (SETQ D4 D3)))
- (IF (= KW 2)
- (PROGN(SETQ D (* 0.002 wwblc))
- (SETQ D4 D3)))
- (IF (= KW 3)
- (PROGN(SETQ D (* 0.002 wwblc))
- (SETQ D4 D2)))
- (SETQ KP 0)
- )
- )
- (IF (= KP 1)
- ;(PROGN(SETQ DC (GETPOINT "\n To point:" ))
- (PROGN
- (setq ss(+ ss 1))
- (setq dc(nth ss en-list))
- (IF (= ss en-s)
- (PROGN(SETQ KK 1)
- )
- (PROGN(SETQ X1 (CAR DC))
- (SETQ Y1 (CADR DC))
- ))
- ))
- )
- (setvar "blipmode" sblip)
- (setvar "cmdecho" scmde)
- )
- (DEFUN c:447()
- (undo_begin)
- (setq sblip (getvar "blipmode"))
- (setq scmde (getvar "cmdecho"))
- (setvar "blipmode" 0)
- (setvar "cmdecho" 0)
- (command "layer" "m" "2480_SYM" "c" "4" "" "")
- (if (= jieshi "1")
- (PROGN
- (setq enss (ssget "x" '((-4 . "<OR")(0 . "POLYLINE")(0 . "LWPOLYLINE")(-4 . "OR>") (8 . "2480"))))
- (if (= enss nil)(PROGN(print "找不到 2480 !")(exit)))
- (setq len (sslength enss))
- (setq s -1)
- (WHILE (/= s (- len 1))
- (setq s(+ s 1))
- (setq en (ssname enss s))
- (a447_a en)
- );endwhile
- )
- (PROGN
- (setq en(car (entsel "\n选择基线:")))
- (a447_a en)
- ));endif
- (command "layer" "f" "2480" "")
- (undo_end)
- );endif
- (DEFUN a447_a(en)
- (setq en-list(get-line-list en))
- (setq en-s(length en-list))
- (SETQ D1 (* 0.01 wwblc))
- (SETQ D D1)
- (SETQ D2 (* 0.001 wwblc))
- (setq pc(nth 0 en-list))
- ;(SETQ PC (GETPOINT "\n Frome point:" ))
- (SETQ X0 (CAR PC))
- (SETQ Y0 (CADR PC))
- (SETQ XA X0)
- (SETQ YA Y0)
- (setq dc(nth 1 en-list))
- (setq ss 1)
- ;(SETQ DC (GETPOINT "\n To point:" ))
- (IF (= DC NIL)
- (PROGN(SETQ KK 1)
- )
- (PROGN(SETQ X1 (CAR DC))
- (SETQ Y1 (CADR DC))
- (SETQ KK 0)
- ))
- (WHILE (/= KK 1)
- (SETQ KM (DISTANCE (LIST X0 Y0) (LIST X1 Y1)))
- (IF (< KM D)
- (PROGN(SETQ D (- D KM))
- (SETQ KP 1)
- (SETQ X0 X1)
- (SETQ Y0 Y1)
- (SETQ XB X0)
- (SETQ YB Y0)
- (COMMAND "LINE" (LIST XA YA) (LIST XB YB) "")
- (SETQ XA XB)
- (SETQ YA YB)
- )
- (PROGN(SETQ HS D)
- (SETQ X (+ X0 (* HS (/ (- X1 X0) KM))))
- (SETQ Y (+ Y0 (* HS (/ (- Y1 Y0) KM))))
- (SETQ XB (- X (* D2 (/ (- X1 X0) KM))))
- (SETQ YB (- Y (* D2 (/ (- Y1 Y0) KM))))
- (SETQ XC1 (- X (* (/ D2 2) (/ (- X1 X0) KM))))
- (SETQ YC1 (- Y (* (/ D2 2) (/ (- Y1 Y0) KM))))
- (SETQ XC2 (+ X (* (/ D2 2) (/ (- X1 X0) KM))))
- (SETQ YC2 (+ Y (* (/ D2 2) (/ (- Y1 Y0) KM))))
- (SETQ XH1 (+ X (+ (* (- XC1 X) 0.707) (* (- YC1 Y) 0.707))))
- (SETQ YH1 (+ Y (- (* (- XC1 X) 0.707) (* (- YC1 Y) 0.707))))
- (SETQ XH2 (+ X (+ (* (- XC2 X) 0.707) (* (- YC2 Y) 0.707))))
- (SETQ YH2 (+ Y (- (* (- XC2 X) 0.707) (* (- YC2 Y) 0.707))))
- (SETQ XE1 (- X (* (/ D2 2) (/ (- Y1 Y0) KM))))
- (SETQ YE1 (+ Y (* (/ D2 2) (/ (- X1 X0) KM))))
- (SETQ XE2 (+ X (* (/ D2 2) (/ (- Y1 Y0) KM))))
- (SETQ YE2 (- Y (* (/ D2 2) (/ (- X1 X0) KM))))
- (SETQ XG1 (+ X (+ (* (- XE1 X) 0.707) (* (- YE1 Y) 0.707))))
- (SETQ YG1 (+ Y (- (* (- XE1 X) 0.707) (* (- YE1 Y) 0.707))))
- (SETQ XG2 (+ X (+ (* (- XE2 X) 0.707) (* (- YE2 Y) 0.707))))
- (SETQ YG2 (+ Y (- (* (- XE2 X) 0.707) (* (- YE2 Y) 0.707))))
- (COMMAND "LINE" (LIST XA YA) (LIST XB YB) "")
- (COMMAND "LINE" (LIST XH1 YH1) (LIST XH2 YH2) "")
- (COMMAND "LINE" (LIST XG1 YG1) (LIST XG2 YG2) "")
- (SETQ XA (+ X (* D2 (/ (- X1 X0) KM))))
- (SETQ YA (+ Y (* D2 (/ (- Y1 Y0) KM))))
- (SETQ X0 X)
- (SETQ Y0 Y)
- (SETQ D D1)
- (SETQ KP 0)
- )
- )
- (IF (= KP 1)
- (PROGN
- (setq ss(+ ss 1))
- (setq dc(nth ss en-list))
- ;(PROGN(SETQ DC (GETPOINT "\n To point:" ))
- (IF (= ss en-s)
- (PROGN(SETQ KK 1)
- (COMMAND "LINE" (LIST XA YA) (LIST X1 Y1) "")
- )
- (PROGN(SETQ X1 (CAR DC))
- (SETQ Y1 (CADR DC))
- ))
- ))
- )
- (setvar "blipmode" sblip)
- (setvar "cmdecho" scmde)
- )
- ;;;;;;;;************修线
- (defun c:xx()
- (undo_begin)
- (setvar "plinewid" 0)
- (setq cla (getvar "Clayer"))
- (setq delenLt nil addLt nil Ltqxn nil)
- (princ "\n曲线编辑[画线]:\n")
- (princ ">>")
- (setq tp 0)
- (while (not (or (= tp "POLYLINE") (= tp "LWPOLYLINE") (= tp "LINE")))
- (setq qx1 (entsel "选择一根线(起始点):"))
- (if (/= qx1 nil)
- (progn
- (setq en1 (car qx1))
- (setq tp (cdr (assoc 0 (entget en1))))
- )
- (setq tp "POLYLINE")
- )
- )
- (if (/= qx1 nil)
- (progn
- (setq en1 (car qx1))
- (setq qsd (cadr qx1))
- (setq endel en1)
- (redraw en1 3)
- (setq ed (entget en1))
- (setq zzz (nth 3 (assoc 10 ed)))
- (setq en1wid (cdr (assoc 40 ed)))
- (if (= zzz 0.0)
- (progn
- (setq edzzz (entget (entnext en1)))
- (setq zzz (nth 3 (assoc 10 edzzz)))
- ))
- (setq enlay (assoc 8 ed))
- (setq enlay (cdr enlay))
- (command "layer" "m" enlay "")
- (princ "\n画线:")
- (setq xyd qsd)
- (setq qyd qsd)
- (setq addlt (cons qsd addlt))
- (while (/= xyd nil)
- (progn
- (princ "\n[")
- (princ zzz)
- (setq xyd (getpoint qyd "]画下一点[右键结束]:"))
- (if (/= xyd nil)
- (progn
- (command "line" qyd xyd "")
- (setq ena (entlast))
- (setq delenLt (cons ena delenLt))
- (setq qyd xyd)
- (setq jsd xyd)
- (setq xydx (nth 0 xyd))
- (setq xydy (nth 1 xyd))
- (setq xyd (list xydx xydy))
- (setq addlt (cons xyd addlt))
- ))
- ))
- (redraw en1 4)
- (setq addlt (reverse addlt))
- (setq qsdx (nth 0 qsd))
- (setq qsdy (nth 1 qsd))
- (setq qsd (list qsdx qsdy))
- (setq jsdx (nth 0 jsd))
- (setq jsdy (nth 1 jsd))
- (setq jsd (list jsdx jsdy))
-
- (if (/= delenLt nil)
- (progn
- (setq Delen (Length delenLt))
- (setq Deln 0)
- (while (< deln delen)
- (progn
- (setq delent (nth deln delenLt))
- (command "erase" delent "")
- (setq Deln (+ 1 deln))
- ))
- (redraw en1 4)
- (get-line-list en1)
- (edplnaddbiao line-list addlt qsd jsd line-elev)
- (if (/= en1wid 0.0)
- (setvar "plinewid" en1wid)
- )
- (Draw_Pln_lt lt)
- (command "erase" endel "")
- ))
- (command "layer" "m" cla "")
- ))
- (setvar "plinewid" 0)
- (undo_end)
- )
- (defun undo_begin()
- (if (equal 0 (getvar "UNDOCTL")) ;Make sure undo is fully enabled.
- (command "_.undo" "_all")
- )
- (if (or (not (equal 1 (logand 1 (getvar "UNDOCTL"))))
- (equal 2 (logand 2 (getvar "UNDOCTL")))
- );or
- (command "_.undo" "_control" "_all")
- )
- (command "undo" "begin")
- )
- (defun undo_end()
- (command "undo" "end")
- )
- (defun Draw_Pln_lt(Plt / i pf len pto)
- (if (/= Plt nil)
- (progn
- (setq i 0)
- (setq pf (nth i Plt))
- (setq len (length Plt))
- (if (= Is_3Dpln 1)
- (command "3dpoly" pf)
- (command "pline" pf)
- )
- (setq i 1)
- (while (< i len)
- (setq pto (nth i Plt))
- (command pto)
- (setq i (+ 1 i))
- )
- (command "")
- ))
- )
- (defun EDPLnaddbiao(enlt addlt p1 p2 enz / pt)
- (SETVAR "CMDECHO" 0)
- (setq Isenadd 1)
- ;;;;;
- (setq EnLen (length enlt))
- (setq n 0)
- (setq min1 1000)
- (setq min2 1000)
- (while (< n Enlen)
- (progn
- (setq pt (nth n enlt))
- (setq ds1 (distance pt p1))
- (setq ds2 (distance pt p2))
- (if (< ds1 min1)
- (progn
- (setq min1 ds1)
- (setq the1 n)
- ))
- (if (< ds2 min2)
- (progn
- (setq min2 ds2)
- (setq the2 n)
- ))
- (setq n (+ 1 n))
- ))
- ;;;;
- (if (> the1 the2)
- (progn
- (setq addlt (reverse addlt))
- (setq thetmp the1)
- (setq the1 the2)
- (setq the2 thetmp)
- ))
- ;;;;
- (setq lt nil)
- (setq n 0)
- (while (< n Enlen)
- (progn
- ;;
- (if (or (< n the1) (> n the2))
- (progn
- (setq pt (nth n enlt))
- (setq ptx (nth 0 pt))
- (setq pty (nth 1 pt))
- (setq pt (list ptx pty enz))
- (setq lt (cons pt lt))
- )
- (progn
- (if (= isenadd 1)
- (progn
- (setq m 0)
- (setq addltlen (length addlt))
- (while (< m addltlen)
- (progn
- (setq pt (nth m addlt))
- (setq ptx (nth 0 pt))
- (setq pty (nth 1 pt))
- (setq pt (list ptx pty enz))
- (setq lt (cons pt lt))
- (setq m (+ 1 m))
- ))
- (setq isenadd 0)
- ))
- )
- )
- ;;
- (setq n (+ 1 n))
- ))
- (princ)
- )
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (defun EdPlnaddLt(Plt)
- (if (/= Plt nil)
- (progn
- (setq i 0)
- (setq pf (nth i Plt))
- (setq len (length Plt))
- (command "pline" pf)
- (setq i 1)
- (while (< i len)
- (progn
- (setq pto (nth i Plt))
- (command pto)
- (setq i (+ 1 i))
- ))
- (command "")
- ))
- ;(setq plt nil)
- ;(setq enn1 (entlast))
- ;(command "pedit" enn1 "w" itW "")
- (princ)
- )
-
- ;;;;;;;;;;;;*
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;断线连接;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (defun c:jj(/ ssent ppent e1 ek1 p1 e2 ek2 p2 sslen ssn ptzd
- pk11 pk12 pk21 pk22 ltk1 ltk2 d11 d12 d21 d22 QzPLJoin
- en1z en2z pt1x pt1y pt1z pt2x pt2y pt2z edk c10 c10n RetYN)
- (setq *error* myerr)
- (princ "\n曲线连接:\n")
- (setq Ssent nil)
- (setq Ppent nil)
- (setq e1 "xxx")
- (while (/= e1 nil)
- (progn
- (print)
- (setq E1 (entsel "选择第一根线[右键结束]:"))
- (if (/= e1 nil)
- (progn
- (setq ek1 (car e1))
- (setq p1 (cadr e1))
- (REDRAW Ek1 3)
- (print)
- (SETQ E2 (ENTSEL "选择第二根线:"))
- (REDRAW Ek1 4)
- (if (/= e2 nil)
- (progn
- (setq ek2 (car e2))
- (setq p2 (cadr e2))
- (setq ssent (cons ek1 ssent))
- (setq ssent (cons ek2 ssent))
- (setq Ppent (cons p1 PPent))
- (setq Ppent (cons p2 PPent))
- ))
- ))
- ))
- (setq ssLen (length ssent))
- (setq ssn 0)
- (setq ssent (reverse ssent))
- (setq ppent (reverse PPent))
- (while (< ssn sslen)
- (progn
- (setq ek1 (nth ssn ssent))
- (setq enj ek1)
- (setq p1 (nth ssn PPent))
- (setq ssn (+ 1 ssn))
- (setq ek2 (nth ssn Ssent))
- (setq p2 (nth ssn Ppent))
- (setq ssn (+ 1 ssn))
- (if (eq ek1 ek2)
- (progn
- (command "pedit" ek1 "c" "x")
- )
- (progn
- (get-line-list ek1)
- (setq ltk1 line-list)
- (setq en1z line-elev)
- (get-line-list ek2)
- (setq ltk2 line-list)
- (setq en2z line-elev)
- (setq QzPLJoin 0)
- (setq dz12 (- en1z en2z))
- (setq dz12 (abs dz12))
- (if (> dz12 0.001)
- (progn
- (princ "\n高程值不相等,要强制连结吗?(Y/N)<N>")
- (setq RetYN (getstring))
- (setq RetYN (strcase RetYN))
- (if (= RetYN "Y")
- (setq QzPLJoin 1)
- )
- ))
- (if (or (< dz12 0.001) (= QzPLJoin 1))
- (progn
- (setq pk11 (nth 0 ltk1))
- (setq pk12 (nth (- (length ltk1) 1) ltk1))
- (setq pk21 (nth 0 ltk2))
- (setq pk22 (nth (- (length ltk2) 1) ltk2))
- (setq d11 (distance p1 pk11))
- (setq d12 (distance p1 pk12))
- (setq d21 (distance p2 pk21))
- (setq d22 (distance p2 pk22))
- (if (> d11 d12)
- (setq ltk1 (reverse ltk1))
- )
- (if (< d21 d22)
- (setq ltk2 (reverse ltk2))
- )
- (setq pk11 (nth 0 ltk1))
- (setq pk22 (nth (- (length ltk2) 1) ltk2))
- (setq pt1x (nth 0 pk11))
- (setq pt1y (nth 1 pk11))
- (setq pt1z (nth 2 pk11))
- (setq pt2x (nth 0 pk22))
- (setq pt2y (nth 1 pk22))
- (setq pt2z (nth 2 pk22))
- (setq pz12 (- pt1z pt2z))
- (setq pz12 (abs pz12))
- (setq ptzdx (/ (+ pt1x pt2x) 2))
- (setq ptzdy (/ (+ pt1y pt2y) 2))
- (setq Ptzd (list ptzdx ptzdy pt1z))
- (setq ltk1 (cons ptzd ltk1))
- (and-list ltk1 ltk2)
- (ames-PlnList and-lt)
- (get-attrib enj)
- (set-attrib (entlast))
- (COMMAND "erase" ek1 "")
- (COMMAND "erase" ek2 "")
- ))
- ));;
- ))
- )
-
- (defun and-List(lt1 lt2 / i len1 xyz)
- (setq i 0)
- (setq len1 (length lt1))
- (setq lt2 (reverse lt2))
- (while (< i len1)
- (progn
- (setq xyz (nth i lt1))
- (setq lt2 (cons xyz lt2))
- (setq i (+ 1 i))
- ))
- (setq and-lt (reverse lt2))
- )
- (defun ames-PlnList(Plt / pf len i pto)
- (if (/= Plt nil)
- (progn
- (setq i 0)
- (setq pf (nth i Plt))
- (setq len (length Plt))
- (command "pline" pf)
- (setq i 1)
- (while (< i len)
- (progn
- (setq pto (nth i Plt))
- (command pto)
- (setq i (+ 1 i))
- ))
- (command "")
- ))
- (princ)
- )
- (defun get-attrib(en-name / en-name-list)
- ;;;;;inint
- ;(attrib-init)
- (setq en-name-list (entget en-name))
- (setq en-type (cdr (assoc 0 en-name-list)))
- (setq en-color (cdr (assoc 62 en-name-list)))
- (if (or (= en-color 0) (= en-color nil))
- (setq en-color "BYLAYER")
- )
- (setq en-layer (cdr (assoc 8 en-name-list)))
- (setq en-Thickness (cdr (assoc 39 en-name-list)))
- (setq en-scale (cdr (assoc 48 en-name-list)))
- (setq en-ltype (cdr (assoc 6 en-name-list)))
- (if (= en-ltype nil) (setq en-ltype "BYLAYER"))
- (cond
- ((= en-type "LWPOLYLINE") (get-lwpl-attrib en-name))
- ((= en-type "POLYLINE") (get-pl-attrib en-name))
- ((= en-type "TEXT") (get-TEXT-attrib en-name))
- ((= en-type "INSERT") (get-insert-attrib en-name))
- (T (prompt "\n不能获得此实体更多属性!") (EXIT))
- );endcond
- )
- (defun get-lwpl-attrib( en-name / en-name-list width width0)
- (setq en-name-list (entget en-name))
- (setq en-elev (cdr (assoc 38 en-name-list)))
- (setq en-close (cdr (assoc 70 en-name-list)))
- (setq width (cdr (assoc 40 en-name-list)))
- (setq width0 (cdr (assoc 41 en-name-list)))
- (if (equal width width0 0.001)
- (setq en-Width width)
- (setq en-Width nil)
- )
- )
- (defun set-attrib(en-name)
- (if (/= en-Layer nil) (command "change" en-name "" "p" "layer" en-layer ""))
- (if (/= en-Ltype nil) (command "change" en-name "" "p" "ltype" en-ltype ""))
- (if (/= en-Thickness nil) (command "change" en-name "" "p" "Thickness" en-Thickness ""))
- (if (/= en-scale nil) (command "change" en-name "" "P" "ltscale" en-scale ""))
- (if (/= en-elev nil) (command "change" en-name "" "p" "elev" en-elev ""))
- (if (/= en-color nil) (command "change" en-name "" "p" "color" en-color ""))
- (if (/= en-width nil) (command "pedit" en-name "width" en-width ""))
- (if (= en-close 1) (command "pedit" en-name "c" ""))
- (if (/= en-Hight nil)
- (command "change" en-name "" en-style en-Hight en-angle en-text "")
- )
-
- )
- (defun get-pl-attrib( en-name / en-name-list vertex-name
- vertex-list width0 width1)
- (setq en-name-list (entget en-name))
- (setq en-close (cdr (assoc 70 en-name-list)))
- (setq width0 (cdr (assoc 40 en-name-list)))
- (setq width1 (cdr (assoc 41 en-name-list)))
- (if (equal width0 width1 0.001)
- (setq en-Width width0)
- (setq en-Width nil)
- )
- (setq vertex-name (entnext en-name))
- (setq vertex-list (entget vertex-name))
- (setq en-elev (nth 3 (assoc 10 vertex-list)))
- )
- ;;;;;;;;;;;;;;;;;;;;;;;;**
- (defun c:kgd();;;块改点
- (print "选择需要改的点")
- (setq SsSel (ssget ))
- (setq s -1)
- (setq Len (sslength SsSel))
- (while (/= s (- len 1))
- (setq s(+ s 1))
- (setq en (ssname sssel s))
- (setq ed (entget en))
- (setq la (cdr (assoc 0 ed)))
- (if (= la "INSERT")
- (progn
- (setq la (cdr (assoc 10 ed)))
- (command "point" la)
- (command "erase" en "")
- )
- )
- )
- )
- (defun c:clgctxt()
- (undo_begin)
- (setvar "cmdecho" 0)
- (setq ed8 (getstring "输入层名:"))
- (command "layer" "m" ed8 "c" "32" """")
- (setq ed0 "text")
- (setq ss0 (ssget "x" (list (cons 8 ed8) (cons 0 ed0))))
- (setq kk (delete_list ss0))
- )
- (defun delete_list(ss)
- (if (/= ss0 nil)
- (progn
- (setq i 0)
- (setq j 0)
- (setq sslen0 (sslength ss0))
- (while (< i sslen0)
- (setq ssen (ssname ss0 i))
- (setq ssed (entget ssen))
- (setq ss10 (cdr (assoc 10 ssed)))
- (setq ay (nth 1 ss10))
- (setq ax ( + (nth 0 ss10) 2))
- (setq az (nth 2 ss10))
- (setq ss20 (list ax ay az))
- (setq sstxt1 (cdr (assoc 1 ssed)))
- (command "insert" "hp.dwg" ss10 "" "" "")
- (command "erase" ssen "")
- (setq txt1 (sebstr sstxt1 1 1))
- (if (= txt1 "+")(setq sstxt1 (substr sstxt1 2)))
- (command "text" ss20 4 0 sstxt1)
- (setq i (+ 1 i))
- )
- )
- )
- (undo_end)
- )
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;;曲线付值
- (defun c:qxfz()
- (setq rcKey nil)
- (setq rckey1 "jcqxz1")
- (while (not (eq rcKey "eXit"))
- (progn
- (initget 128 "jcqxz1 jcqxz2 eXit")
- (print)
- (setq rcKey (getkword "起点在高处[1]/起点在低处[2]/退出[X] 右键继续:"))
- (if (eq rcKey nil)(setq rckey rckey1)(setq rckey1 rckey))
- (cond
- ((eq rcKey "jcqxz1") (jcqxz1)); (princ "\n起点在高处[1]:\n"))
- ((eq rcKey "jcqxz2") (jcqxz2)); (princ "\n起点在低处[2]:\n"))
- (t nil)
- );;;cond
- )
- (princ)
- )
- )
- (defun jcqxz2()
- (setvar "cmdecho" 0)
- (setvar "osmode" 0)
- (print)
- (setq p1(getpoint "低处"))
- (print)
- (setq p2(getpoint p1 "高处"))
- (print)
- (setq ck (ssget "F" (list p1 p2 )))
- (setq ss -1)
- (setq ys 3)
- (setq gc nil)
- (while (= gc nil)
- (setq ss(+ ss 1))
- (setq ck1(ssname ck ss))
- (setq cm(cdr (assoc 8 (entget ck1))))
- (print cm)
- (if (or (= cm jc_jqx)(= cm jc_sqx))
- (progn
- (command "_change" ck1 "" "p" "c" ys "")
- (setq lin-list (get-line-list ck1))
- (setq gc(nth 2 (nth 1 lin-list)))
- (print gc)
- ));;endif
- )
- (repeat (- (sslength ck) (+ ss 1))
- (setq ss (+ ss 1))
- (setq ys 3)
- (setq ck1(ssname ck ss))
- (setq cm(cdr (assoc 8 (entget ck1))))
- (if (or (= cm jc_jqx)(= cm jc_sqx))
- (progn
- (setq gc(+ gc jc_dgj))
- (print gc)
- (command "_change" ck1 "" "p" "e" gc "")
- (command "_change" ck1 "" "p" "c" ys "")
- )))
- (princ)
- )
- (defun jcqxz1()
- (setvar "cmdecho" 0)
- (setvar "osmode" 0)
- (print)
- (setq p1(getpoint "高处"))
- (print)
- (setq p2(getpoint p1 "低处"))
- (print)
- (setq ck (ssget "F" (list p1 p2 )))
- (setq ss -1)
- (setq ys 3)
- (setq gc nil)
- (while (= gc nil)
- (setq ss(+ ss 1))
- (setq ck1(ssname ck ss))
- (setq cm(cdr (assoc 8 (entget ck1))))
- (if (or (= cm jc_jqx)(= cm jc_sqx))
- (progn
- (command "_change" ck1 "" "p" "c" ys "")
- (setq lin-list (get-line-list ck1))
- (setq gc(nth 2 (nth 1 lin-list)))
- (print gc)
- ));;endif
- )
- (repeat (- (sslength ck) (+ ss 1))
- (setq ss (+ ss 1))
- (setq ck1(ssname ck ss))
- (setq cm(cdr (assoc 8 (entget ck1))))
- (if (or (= cm jc_jqx)(= cm jc_sqx))
- (progn
- (setq gc(- gc jc_dgj))
- (setq ys 3)
- (command "_change" ck1 "" "p" "e" gc "")
- (print gc)
- (command "_change" ck1 "" "p" "c" ys "")
- ))
- )
- (princ)
- )
- ;;;;检查点线
- (defun c:jcdx()
- (if (= jcdx1 "0")(zdjcdx)(sdjcdx))
- )
- (defun msgv(pntVEL En1VEL En2VEL)
- (princ "\nPntVEL: ")
- (princ pntVEL)
- (princ " En1VEL: ")
- (princ En1VEL)
- (princ " En2VEL ")
- (princ En2VEL)
- (princ "\n"))
- (defun SetData()
- (setq LaJqx jc_jqx)
- (setq LaSqx jc_sqx)
- (setq LaDian jc_gcd)
- (setq SearchR 80)
- (setq EnAng 0)
- (setq EnDis 0)
- (setq StpAng 23)
- (setq StpDis 0.5)
- (setq StpDis (* StpDis Blc)))
- (defun chkd(EnPnt BLC DGj / dv absdv En1VEL En2VEL )
- (SetData)
- (setq dgj (float dgj))
- (setq Pnt (assoc 10 (entget EnPnt)))
- (if (/= Pnt nil)
- (progn
- (setq ptx (nth 1 Pnt))
- (setq pty (nth 2 Pnt))
- (setq Pnt0 (list ptx pty));create point (2d)
- (setq EvlEnpnt (nth 3 Pnt));get point evl
- (princ EvlEnpnt)
- (setq EvlEnpnt (float EvlEnpnt))
- ))
- (setq Do 1)
- (while (= Do 1);0
- (progn
- (setq Done1 1)
- (setq EnDis StpDis)
- (while (= Done1 1)
- (progn
- (setq Pnt1 (polar Pnt0 EnAng EnDis))
- (SETQ SS1 (SSGET "F" (LIST Pnt0 Pnt1)))
- (if (/= SS1 nil)
- (progn
- (SETQ LEN (SSLENGTH SS1))
- (setq n 0)
- (while (< n LEN)
- (progn
- (setq en (ssname SS1 n))
- (setq SS1ed (entget en))
- (SETQ Lay (CDR (ASSOC 8 SS1ED)))
- (if (or (= Lay LaJqx) (= Lay LaSqx))
- (progn
- (setq Done1 0)
- (setq tmppnt pnt1)
- (setq SS1en en)
- (setq n LEN)
- )
- )
- (setq n (+ n 1))
- ))
- ))
- (if (> EnDis SearchR)
- (progn
- (setq EnAng (+ EnAng StpAng))
- (if (> EnAng (- 360 StpAng))
- (progn
- (setq Done1 2)
- ))
- (setq EnDis StpDis)
- ))
- (setq EnDis (+ EnDis StpDis))
- )
- )
- (if (= Done1 0)
- (progn
- (setq Done 1)
- (setq EnDis StpDis)
- (while (= Done 1)
- (progn
- (setq pnt2 (polar tmpPnt EnAng EnDis))
- (SETQ SS2 (SSGET "F" (LIST tmpPnt Pnt2)))
- (if (/= SS2 nil)
- (progn
- (SETQ LEN (SSLENGTH SS2))
- (setq n 0)
- (while (< n LEN)
- (progn
- (setq en (ssname SS2 n))
- (setq SS2ed (entget en))
- (SETQ Lay (CDR (ASSOC 8 SS2ED)))
- (if (or (= Lay LaJqx) (= Lay LaSqx))
- (progn
- (setq SS2en en)
- (setq done 0)
- (setq n LEN)
- )
- )
- (setq n (+ n 1))
- ))
- ))
- (if (> EnDis SearchR)
- (progn
- (setq Done 2)
- (setq do 1)
- ))
- (setq EnDis (+ EnDis StpDis))
- )
- )
- ))
- (if (= Done 0)
- (progn
- (setq SS1ED (entnext SS1en))
- (setq SS1ED (entget SS1ED))
- (setq En1VEL (nth 3 (assoc 10 SS1ED)))
- (setq SS2ED (entnext SS2en))
- (setq SS2ED (entget SS2ED))
- (setq En2VEL (nth 3 (assoc 10 SS2ED)))
- (setq En1VEL (float En1VEL))
- (setq En2VEL (float En2VEL))
- (setq adgj (+ En1VEL DGJ))
- (setq jdgj (- En1VEL DGJ))
- (setq dv (- En2VEL En1VEL))
- (setq absdv (abs dv))
- (if (< absdv 0.0001)
- (progn
- (setq dv 0.0)
- (setq absdv 0.0)
- )
- )
- (if (= 0 absdv)
- (progn
- (setq Do 1)
- (princ)
- ))
- (if (< dv 0)
- (progn
- (if ( and (> EvlEnpnt En1VEL) (< EvlEnpnt adgj))
- (progn
- (setq Do 0)
- )
- (progn
- (setq Do 3)
- )
- )
- ))
- (if (> dv 0)
- (progn
- (if ( and (< EvlEnpnt En1VEL) (> EvlEnpnt jdgj))
- (progn
- (setq Do 0)
- )
- (progn
- (setq Do 3)
- )
- )
- ))
- )
- )
- (if (and (> EnAng 360) (= do 1))
- (progn
- (setq Do 2)
- (princ)
- ))
- (setq EnAng (+ EnAng StpAng))
- (setq EnDis StpDis)
- (princ)
- ))
-
- (if (= Do 4)
- (progn
- (msgv EvlEnpnt En1VEL En2VEL)
- (command "layer" "make" "XXXX的点" "color" 5 "" "")
- (command "circle" Pnt0 (* 5 BLC) "")
- (princ)
- (setq do4 (+ 1 do4))
- ))
- (if (= Do 3)
- (progn
- (command "layer" "make" "错误的点" "color" 1 "" "")
- (command "circle" Pnt0 (* 5 BLC) "")
- (princ)
- (setq do3 (+ 1 do3))
- ))
- (if (= Do 2)
- (progn
- (command "layer" "make" "不能判断的点" "color" 2 "" "")
- (command "circle" Pnt0 (* 5 BLC) "")
- (princ)
- (setq do2 (+ 1 do2))
- ))
- (if (= Do 0)
- (progn
- (command "layer" "make" "正确的点" "color" 3 "" "")
- (command "circle" Pnt0 (* 3 BLC) "")
- (setq do0 (+ 1 do0))
- (princ)
- ))
- (princ)
- )
- (defun sdjcdx()
- (SETVAR "CMDECHO" 0)
- (setq p1 (getpoint "选择第一点:"))
- (setq p2 (getcorner p1 "选择第二点:"))
- (SETQ Pnts (ssget "w" p1 p2))
- (SETQ LENth (SSLENGTH Pnts))
- (princ lenth)
- (setq m 0)
- (while (< m lenth)
- (progn
- (setq en (ssname Pnts m))
- (princ "判断")
- (princ m)
- (princ "点: ")
- (print)
- (setq ed0 (entget en))
- (SETQ La (CDR (ASSOC 8 ED0)))
- (if(= La "8140")
- (chkd en Blc0 dgj0)
- )
- (setq m (+ m 1))
- (command "pline" pnt0 pnt1 pnt2 "")
- ));end while
- )
- (defun zdjcdx()
- (setq Blc0 (/ wwblc 1000))
- (setq Dgj0 jc_dgj)
- (princ "\n请稍等一会儿......")
- (setq do4 0)
- (setq do3 0)
- (setq do2 0)
- (setq do0 0)
- (SETVAR "CMDECHO" 0)
- (SETQ Pnts (SSGET "x" (list (cons 0 "POINT")(cons 8 jc_gcd))))
- (if (= pnts nil)(SETQ Pnts (SSGET "x" (list (cons 0 "INSERT")(cons 8 jc_gcd)))))
- (if (= pnts nil)(progn(print "找不到高程点!")(exit abort)))
- (SETQ LENth (SSLENGTH Pnts))
- (princ lenth)
- (setq m 0)
- (while (< m lenth)
- (progn
- (setq en (ssname Pnts m))
- (princ "判断")
- (princ m)
- (princ "点: ")
- (print)
- (setq ed0 (entget en))
- (SETQ La (CDR (ASSOC 8 ED0)))
- ; (if(= La LaDian)
- (if(= La "8140")
- (chkd en Blc0 dgj0)
- )
- (setq m (+ m 1))
- ))
- (princ "错误点个数:[ ")
- (princ do3)
- (princ " ] 不能判定点个数:[ ")
- (princ do2)
- (princ " ] 正确点个数:[ ")
- (princ do0)
- (princ " ]")
- (princ)
- )
- ;;;;;;;;;;;;;;;;
- ;内插
- (defun dxf(ent i / val)
- (setq val (cdr (assoc i (entget ent)))))
- (defun sysvarinit()
- (setvar "cmdecho" 0)
- (setvar "plinetype" 0)
- (setvar "luprec" 3)
- (setvar "OSMODE" 0))
- (sysvarinit)
- (if (= Gol_wid nil)
- (setq Gol_wid 0.0))
- (setq NcKjwayNI 0)
- (setq sqxlayer "8110")
- (setq rcQxgs 4)
- (setq LjDis 30.0)
- (setq dges-dgj 2.0)
- (setq rcCs 1 pc_lj 1 NC_BJ_LJ 1)
- (setq DrcCs0 1)
- (setq DrcCs1 1)
- (setq Is_3Dpln 0)
- (setq rcBlc 2)
- (setq qbo_ang1 25.0)
- (setq qbo_ang2 40.0)
-
- (defun c:ii()
- (princ "\n曲线内插:")
- (qxnc_xg 0)
- )
- (defun c:qxxg()
- (princ "\n修多根曲线:")
- (qxnc_xg 1)
- )
- (defun qxnc_xg(NC_BJ_LJ)
- (setq ed_scale(/ wwblc 1000))
- ;(setq NC_BJ_LJ 1)
- (setq NcKjwayNI 0)
- (if (= NcKjwayNI 0)
- (NcEd_N)
- (NcEd_I)))
- (defun NcEd_I()
- (ed-qxrcin)
- (setq NcKjway 0)
- (setq NcKjwayNI 1)
- (if (= isedpln_qxnc 1)
- (progn
- (undo_begin)
- (Ed_QxIns lt1 lt2 p1z p2z)
- (Ed_Nc_Lj qxncaddent)
- (undo_end))))
- (defun NcEd_N()
- (ed-qxrcin)
- (setq NcKjway 0)
- (setq NcKjwayNI 0)
- (if (= isedpln_qxnc 1)
- (progn
- (undo_begin)
- (Ed_QxNc lt1 lt2 p1z p2z)
- (Ed_Nc_Lj qxncaddent)
- (undo_end))))
- (defun ed-qxrcin( / rc_qxgs pt3 qx1 qx2 en1 qsd1 en2 qsd2 dz dgj rckey)
- (setq isedpln_qxnc 0)
- (setq pt3 nil)
- (setvar "cmdecho" 0)
- (setq Dges-dgj JC_dgj)
- (princ "\n曲线根数[")
- (princ rcqxgs)
- (princ "]:")
- (if (= NcKjway 0)
- (setq Rc_Qxgs (getint)))
- (if (/= Rc_Qxgs nil)
- (setq rcQxgs rc_Qxgs))
- (princ "\n");;曲线
- (setq tp 0)
- (while (not (or (= tp "POLYLINE") (= tp "LWPOLYLINE") (= tp "LINE")))
- (setq qx1 (entsel "选择第一根线(起始点):"))
- (if (/= qx1 nil)
- (progn
- (setq en11 (car qx1))
- (setq tp (dxf en11 0)))
- (setq tp "POLYLINE")))
- (if (/= qx1 nil)
- (progn
- (setq en1 (car qx1))
- (setq qsd1 (cadr qx1))
- (redraw en1 3)
- (print)
- (setq tp 0)
- (while (not (or (= tp "POLYLINE") (= tp "LWPOLYLINE") (= tp "LINE")))
- (setq qx2 (ENTSEL "\n选择第二根线(起始点):"))
- (if (/= qx2 nil)
- (progn
- (setq en22 (car qx2))
- (setq tp (dxf en22 0)))
- (setq tp "POLYLINE")))
- (if (/= qx2 nil)
- (progn
- (setq en2 (car qx2))
- (setq qsd2 (cadr qx2))
- (setq zzd1 (getpoint "\n选择第一根线(终止点)[右键结束]:"))
- (if (= zzd1 nil)
- (progn
- (redraw en1 4)
- (redraw en2 4)
- (redraw en1 1)
- (redraw en2 1)
- (get-line-list en1)
- (setq l1close Dges-plnclose)
- (setq p1z line-elev)
- (setq Lt1 line-list)
- (get-line-list en2)
- (setq l2close Dges-plnclose)
- (setq p2z line-elev)
- (setq Lt2 line-list)
- (if (or (= l1close 1) (= l2close 1))
- (progn
- (setq pt1 (nth 0 lt1))
- (p-lt-min pt1 lt2)
- (setq pt2 (nth 0 lt2))
- (Dges-resort lt2 ptm ptm pt2);sortlt
- (setq lt2 sortlt)
- (Dges-lt-area lt1)
- (setq area1 area)
- (Dges-lt-area lt2)
- (if (< (* area1 area) 0)
- (setq lt1 (reverse lt1)))
- ));end if closed
- );else 选起止点
- (progn
- (redraw en2 1)
- (setq zzd2 (getpoint "\n选择第二根线(终止点):"))
- (redraw en1 4)
- (redraw en2 1)
- (get-line-list en1)
- (setq p1z line-elev)
- (setq l1close Dges-plnclose)
- (setq Lt1 line-list)
- (get-line-list en2)
- (setq p2z line-elev)
- (setq lt2 line-list)
- (setq l2close Dges-plnclose)
- (setq pt3 nil)
- (if (= l1close 1)
- (progn
- (setq pt3 (getpoint "\n选择内插区间:"))
- (Dges-resort lt1 qsd1 zzd1 pt3)
- (setq lt1 sortlt));no close
- (progn
- (Dges-resort lt1 qsd1 zzd1 pt3)
- (setq lt1 sortlt)
- ));end if l1close
- (get-line-list en2)
- (setq l2close Dges-plnclose)
- (setq p2z line-elev)
- (setq Lt2 line-list)
- (if (= l2close 1)
- (progn
- (if (= pt3 nil) (setq pt3 (getpoint "\n选择内插区间:")))
- (Dges-resort lt2 qsd2 zzd2 pt3)
- (setq lt2 sortlt)
- );no close
- (progn
- (Dges-resort lt2 qsd2 zzd2 pt3)
- (setq lt2 sortlt)
- )) ;end if l2close
- ));;;;;end 选择 if
- (setq isedpln_qxnc 1)
- (setq dz (- p1z p2z))
- (setq dgj (/ dz (+ 1 rcQxgs)))
- (if (not (equal (abs dgj) Dges-dgj 0.001))
- (progn
- (initget 128 "Yes No")
- (princ "\n")
- (if (eq rcKey nil)
- (setq rckey "yes"))
- (cond
- ((eq rcKey "Yes") (setq isedpln_qxnc 1))
- ((eq rcKey "No") (setq isedpln_qxnc 0))))))))))
- (defun Ed_QxIns(lt1 lt2 p1z p2z / len1 dlt dpt len1 len2 lt1 lt2 ltmp tmpz n1 n2 l1pt l2pt dis1 dis2
- nmin mm addpt addn)
- (if (and (/= lt1 nil) (/= lt2 nil))
- (progn
- (setq dlt nil)
- (setq len1 (length Lt1))
- (setq len2 (length Lt2))
- (if (< len1 len2);<
- (progn
- (setq Ltmp Lt1)
- (setq Lt1 Lt2)
- (setq Lt2 Ltmp)
- (setq Lent Len1)
- (setq Len1 Len2)
- (setq Len2 Lent)
- (setq tmpz p1z)
- (setq p1z p2z)
- (setq p2z tmpz)))
- (setq n1 0)
- (setq n2 0)
- (setq L1pt (nth n1 Lt1))
- (setq L2pt (nth n2 Lt2))
- (setq dis1 (distance l1pt l2pt))
- (setq L2pt (nth (- Len2 1) Lt2))
- (setq dis2 (distance l1pt l2pt))
- (if (> dis1 dis2)
- (setq lt2 (reverse lt2)))
- (setq L1pt (car Lt1))
- (setq L2pt (car Lt2))
- (setq dpt (list l1pt l2pt))
- (setq dlt (cons dpt dlt))
- (setq nmin 0)
- (setq tmpn nmin)
- (setq Len21 (- Len2 1))
- (while (< n1 Len1)
- (setq L1pt (nth n1 Lt1))
- (setq mm n2)
- (setq L2pt0 (nth n2 Lt2))
- (setq dis1 (distance l1pt l2pt0))
- (setq dis1tmp dis1)
- (while (< mm Len21)
- (setq mm (+ 1 mm))
- (setq L2pt1 (nth mm Lt2))
- (setq dis2 (distance l1pt l2pt1))
- (if (> dis1 dis2)
- (progn
- (setq nmin mm)
- (setq dis1 dis2))));;;while
- (if (/= dis1tmp dis1)
- (setq n2 (+ 1 n2)))
- (setq L2pt (nth nmin Lt2))
- (if (> nmin (+ rccs tmpn))
- (progn
- (setq addn (+ tmpn drccs0))
- (while (< addn (- nmin drccs1))
- (setq addpt (nth addn Lt2))
- (setq dpt (list l1pt addpt))
- (setq dlt (cons dpt dlt))
- (setq addn (+ 1 addn)))))
- (setq dpt (list l1pt l2pt))
- (setq dlt (cons dpt dlt))
- (setq n1 (+ 1 n1))
- (setq tmpn nmin));while
- (setq L1pt (last Lt1))
- (setq L2pt (last Lt2))
- (setq dpt (list l1pt l2pt))
- (setq dlt (cons dpt dlt))
- (Draw_pln_n dlt))))
- (defun Ed_Nc_Lj(qxncent / woff i len ent delent ed zz0 zzz edzzz entiii plzb strpt endpt strx stry pt1 pt2 ss iii nnn)
- (if (= NC_BJ_LJ 1)
- (progn
- (setq qxncaddent qxncent)
- (setq delqxncent qxncent)
- (setq woff (* ED_SCALE 1.5))
- (if (/= qxncaddent nil)
- (progn
- (setq i 0)
- (setq len (length qxncaddent))
- (while (< i len)
- (setq ent (nth i qxncaddent))
- (setq delent ent)
- (setq ed (entget ent))
- (if (/= ed nil)
- (progn
- (setq zz0 (nth 3 (assoc 10 ed)))
- (if (= zz0 0.0)
- (progn
- (setq edzzz (entget (entnext ent)))
- (setq zz0 (nth 3 (assoc 10 edzzz)))))
- (setq zz0 (rtos zz0 2 1))
- (setq plzb (get-line-list ent))
- (setq strpt (car plzb))
- (setq endpt (last plzb))
- (IF (and (/= plzb nil) (/= strpt nil) (/= endpt nil))
- (progn
- (setq strx (nth 0 strpt))
- (setq stry (nth 1 strpt))
- (setq pt1 (list (- strx woff) (- stry woff)))
- (setq pt2 (list (+ strx woff) (+ stry woff)))
- (setq ss (ssget "c" pt1 pt2))
- (if (/= ss nil)
- (progn
- (setq iii 0)
- (SETQ nnn (sslength ss))
- (while (< iii nnn)
- (SETQ entiii (ssname ss iii))
- (if (/= ent entiii)
- (progn
- (setq ed (entget entiii))
- (if (/= ed nil)
- (progn
- (setq ed38 (assoc 38 ed))
- (if (= ed38 nil)
- (setq zzz (nth 3 (assoc 10 ed)))
- (setq zzz (cdr ed38)))
- (if (= zzz 0.0)
- (progn
- (setq edzzz (entget (entnext entiii)))
- (setq zzz (nth 3 (assoc 10 edzzz)))))
- (if (/= zzz nil)
- (setq ZZz (rtos zzz 2 1 ))
- (setq ZZz 0))
- (if (= zzz zz0)
- (progn
- (command "ERASE" delent "")
- (setq delent (nth i delqxncent))
- (command "ERASE" delent "")
- (setq lt (get-line-list entiii))
- (edplnaddbiao lt plzb strpt endpt (atof zzz))
- (Draw_Pln_lt lt)
- (entdel entiii)))))))
- (setq iii (+ 1 iii)))))))))
- (setq endpt nil strpt nil)
- (setq i (+ 1 i))))))))
- (defun Ed_QxNc(lt1 lt2 p1z p2z / qx1 en1 qsd1 zzd1 qx2 en2 qsd2 zzd2 p1z lt1 p2z lt2 len1 len2 duand1 duand2 i j sti stj pi2 diand
- pt1i pt1j ptsi ptsj jiaod11 jiaod12 jiaod21 jiaod22 jiaod1 jiaod2 listpp)
- (if (and (/= lt1 nil) (/= lt2 nil))
- (progn
- (setq len1 (- (length Lt1) 1))
- (setq len2 (- (length Lt2) 1))
- (setq duand1 (distance (nth 0 lt1) (nth 0 lt2)))
- (setq duand2 (distance (nth 0 lt1) (nth len2 lt2)))
- (if (> duand1 duand2)
- (setq lt2 (reverse lt2)))
- (setq i 0)
- (setq j 0)
- (setq sti i stj j)
- (setq pi2 (* pi 2))
- (setq diand (list (list (nth 0 lt1) (nth 0 lt2))))
- (while (and (< i len1) (< j len2))
- (setq pt1i (nth (+ 1 i) lt1))
- (setq pt1j (nth (+ 1 j) lt2))
- (setq ptsi (nth sti lt1))
- (setq ptsj (nth stj lt2))
- (setq jiaod11 (angle pt1i ptsi))
- (setq jiaod12 (angle pt1i ptsj))
- (setq jiaod21 (angle pt1j ptsi))
- (setq jiaod22 (angle pt1j ptsj))
- (setq jiaod1 (abs (- jiaod11 jiaod12)))
- (setq jiaod2 (abs (- jiaod21 jiaod22)))
- (if (> jiaod1 pi) (setq jiaod1 (- pi2 jiaod1)))
- (if (> jiaod2 pi) (setq jiaod2 (- pi2 jiaod2)))
- (if (> jiaod1 jiaod2)
- (progn
- (setq i (+ 1 i))
- (setq listpp (list (nth i lt1) (nth j lt2)))
- (setq diand (cons listpp diand))
- (setq sti i))
- (progn
- (setq j (+ 1 j))
- (setq listpp (list (nth i lt1) (nth j lt2)))
- (setq diand (cons listpp diand))
- (setq stj j))))
- (if (and (< (- len1 i) 4) (< (- len2 j) 4))
- (progn
- (setq listpp (list (last lt1) (last lt2)))
- (setq diand (cons listpp diand))))
- (Draw_pln_n diand))))
- (defun Dges-resort(lt pt111 pt222 pt3 / n xyz ltzj
- fdpt1 fdpt2 fdpt3 fdpt1n fdpt2n tmplt1 tmplt2)
- (setq sortlt nil tmplt1 nil tmplt2 nil)
- (if (= pt111 nil)
- (setq pt1 (car lt))
- (setq pt1 pt111))
- (if (= pt222 nil)
- (setq pt2 (last lt))
- (setq pt2 pt222))
- (setq ltzj 1)
- (setq n (length lt))
- (setq xyz (nth 0 lt))
- (if (/= xyz (nth (- n 1) lt))
- (progn
- (setq lt (reverse lt))
- (setq lt (cons xyz lt))
- (setq lt (reverse lt))
- (setq n (+ 1 n))
- ));;if /=xyz
- (p-lt-min pt1 lt)
- (setq pt1 ptm)
- (p-lt-min pt2 lt)
- (setq pt2 ptm)
- (if (/= pt3 nil)
- (progn
- (p-lt-min pt3 lt)
- (setq pt3 ptm)))
- (setq i 0 fdpt1 0 fdpt2 0 fdpt3 0)
- (while (< i n)
- (progn
- (setq xyz (nth i lt))
- (if (equal xyz pt1 0.001)
- (progn
- (setq fdpt1 1)
- (setq fdpt1n i)));if
- (if (equal xyz pt2 0.001)
- (progn
- (setq fdpt2 1)
- (setq fdpt2n i)));if
- (if (/= pt3 nil)
- (progn
- (if (equal xyz pt3 0.001)
- (progn
- (setq fdpt3 1)
- (if (or (and (= fdpt1 1) (= fdpt2 1)) (and (= fdpt1 0) (= fdpt2 0)))
- (progn
- (setq ltzj 0)
- ));if (or
- ));;(if (= xyz pt3)
- ));; (/= pt3 nil)
- (if (and (= fdpt1 1) (= fdpt2 1)(= pt3 nil))
- (progn
- (setq ltzj 1)
- (setq i n)
- ))
- (setq i (+ 1 i))
- ));end while
- (if (> fdpt1n fdpt2n)
- (setq tmp fdpt1n fdpt1n fdpt2n fdpt2n tmp)
- )
- (if (= ltzj 1)
- (progn
- (setq i fdpt1n)
- (while (<= i fdpt2n)
- (progn
- (setq xyz (nth i lt))
- (setq sortlt (cons xyz sortlt))
- (setq i (+ 1 i))
- ))
- (setq sortlt (reverse sortlt))
- );else /= 1
- (progn
- (setq i 0)
- (while (<= i fdpt1n)
- (progn
- (setq xyz (nth i lt))
- (setq tmplt1 (cons xyz tmplt1))
- (setq i (+ 1 i))
- ))
- (setq tmplt1 (reverse tmplt1))
- (setq i fdpt2n)
- (while (< i n)
- (progn
- (setq xyz (nth i lt))
- (setq tmplt2 (cons xyz tmplt2))
- (setq i (+ 1 i))
- ))
- (setq tmplt2 (reverse tmplt2))
- (append tmplt1 tmplt2)
- (setq ptz (last xyz))
- (setq sortlt and-lt)
- ));end if
- (setq sortlt sortlt)
- )
- (defun p-lt-min(pt lt / i pti mins n dis)
- (setq mins 9999.0)
- (if (and (/= lt nil) (/= pt nil))
- (progn
- (setq n (length lt))
- (setq i 0)
- (repeat n
- (setq pti (nth i lt))
- (if (/= pti nil)
- (progn
- (setq dis (distance pt pti))
- (if (< dis mins)
- (progn
- (setq mins dis)
- (setq ptm pti)
- ))
- ));if pti
- (setq i (+ 1 i))
- );repeat
- ));if and
- )
- (defun Draw_pln_n(diand / ddlen di ddb
- tmpp11 tmpp12 tmpp21 tmpp22 ang1 ang2 ang3 ang4 pnt1 pnt2 pnt3 pnt4 pnt5 m gs n pt1 pt2 pptx
- ppty pptz ppt ang12 ang13 ang2a )
- (setq qxncaddent nil)
- ;;;;;;;;; 优化
- (setq ddlen (length diand))
- (setq di 0)
- (SETQ ddb (list (nth 0 diand)))
- (while (< di (- ddlen 2))
- (progn
- (setq tmpp11 (nth 0 (nth di diand)))
- (setq tmpp12 (nth 1 (nth di diand)))
- (setq tmpp21 (nth 0 (nth (+ 2 di) diand)))
- (setq tmpp22 (nth 1 (nth (+ 2 di) diand)))
- (if (or (equal tmpp11 tmpp21) (equal tmpp12 tmpp22))
- (progn
- (setq ddb (cons (nth (+ 1 di) diand) ddb))
- (setq di (+ 1 di))
- )
- (progn
- (setq ddb (cons (nth (+ 2 di) diand) ddb))
- (setq di (+ 2 di))
- ))
- ))
- (if (= di (- ddlen 2))
- (setq ddb (cons (nth (- ddlen 1) diand) ddb))
- )
- (setq diand ddb ddb nil)
- ;;;;;画线
- (command "layer" "m" sqxlayer "" "")
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yjy去波init bg
- (setq ang1 nil ang2 nil ang3 nil ang4 nil
- pnt1 nil pnt2 nil pnt3 nil pnt4 nil pnt5 nil
- )
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yjyed
- (setq m (length diand))
- (setq gs 0)
- (while (< gs RCQxgs)
- (setq n 0)
- (setq plzb nil)
- (if (= Is_3Dpln 1)
- (command "3dpoly")
- (command "pline")
- )
- (setq pptz (+ (* (/ (- p2z p1z) (+ 1 RCQxgs)) (+ 1 gs)) p1z))
- (while (< n m)
- (setq diandd (nth n diand))
- (setq pt1 (nth 0 diandd))
- (setq pt2 (nth 1 diandd))
- (setq pptx (+ (* (/ (- (nth 0 pt2) (nth 0 pt1)) (+ 1 RCQxgs)) (+ 1 gs)) (nth 0 pt1)))
- (setq ppty (+ (* (/ (- (nth 1 pt2) (nth 1 pt1)) (+ 1 RCQxgs)) (+ 1 gs)) (nth 1 pt1)))
- (setq ppt (list pptx ppty pptz))
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yjy去波bg
- (if (/= pnt4 nil)
- (setq pnt5 pnt4)
- )
- (if (/= pnt3 nil)
- (setq pnt4 pnt3)
- )
- (if (/= pnt2 nil)
- (setq pnt3 pnt2)
- )
- (if (/= pnt1 nil)
- (setq pnt2 pnt1)
- )
- (setq pnt1 ppt)
- (if (and (/= pnt1 nil) (/= pnt2 nil) (/= pnt3 nil) (/= pnt4 nil) (/= pnt5 nil))
- (progn
- (setq ang1 (ang3pnt pnt5 pnt4 pnt3))
- (setq ang2 (ang3pnt pnt4 pnt3 pnt2))
- (setq ang3 (ang3pnt pnt3 pnt2 pnt1))
- (setq ang12 (* ang1 ang2))
- (setq ang13 (* ang1 ang3))
- (setq ang2A (abs ang2))
- (if (not (or (and (> ang13 0) (< ang12 0) (> ang2A qbo_ang1)) (> ang2A qbo_ang2)))
- (if (> n 8)
- (command pnt3)
- (command ppt)
- )
- )
- )
- (progn
- (command ppt)
- ))
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yjyed
- (setq n (+ 1 n))
- )
- ;;;;;;;;;;;;;;;
- (command pnt2)
- (command pnt1)
- ;;;;;;;;;;;;;;;
- (command "")
- (setq entL (entlast))
- (setq qxncaddent (cons entL qxncaddent))
- (setq gs (+ 1 gs))
- )
- )
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yjy
- (defun ang3pnt(pt0 pt1 pt2 / ang10 ang12 angzy zzjj)
- (setq ang10 (rtod (angle pt1 pt0)))
- (setq ang12 (rtod (angle pt1 pt2)))
- (setq ang (- ang10 ang12))
- (setq angabs (abs ang))
- (setq angJ (- angabs 180.0))
- (if (< angabs 180.0)
- (progn
- (if (< ang 0.0)
- (setq angJ (abs angJ))
- (setq angJ (- 0.0 (abs angJ)))
- )
- ))
- (if (> angabs 180.0)
- (progn
- (if (< ang 0.0)
- (setq angJ (- 0.0 (abs angJ)))
- (setq angJ (abs angJ))
- )
- ))
- ;;;;;;
- ;(setvar "luprec" 0)
- ;(setq zzjj (rtos angJ))
- ;(command "text" pt1 "1" "" zzjj)
- (setq Myang angJ)
- )
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (defun rtod(r)
- (/ (* r 180.0) 3.1415926)
- )
- ;;;;;;;;;;;;;;;;;;;;;;;;
-
- (print)
-
|