1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255 |
- (command "_menuunload" "GB-512")
- (command "_menuload" "GB-512")
- (menucmd "p15=+GB-512.pop1")
- (setvar "cmdecho" 0);;;关闭命令行回显功能
- (setvar "osmode" 0);关闭捕捉
- (setq wwh 8888)
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (defun c:edPLnElve()
- ;(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:chd()
- (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:Edpln()
- (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:lj(/ 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:qxnc()
- (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)
- (princ " (^_^)GB-512(^_^) OK!")
- (GB512blc)
|